草庐IT

c++ - 按大写字母顺序排列字符串 C++

我试图用C++创建一个程序,以大写字母在其对应的小写字母之前的方式按字母顺序对给定字符串进行排序。例子:DCBA排序字符串:AaBbCcDd下面是代码。#include#include#includestructchar_{charc;chardiff;char_();char_(charx);};char_::char_(){c=0;diff=0;}char_::char_(charx){c=std::tolower(x);diff=c-x;}voidcharswap(char_&x,char_&y){char_temp;temp=x;x=y;y=temp;}intmain(){st

c++ - char 到大写赋值段错误

为了进一步了解C++的内部工作原理,我决定编写自己的字符串类。但是我被困在.toUpper()和.toLower()函数上。这是我的代码。Text&toUpper(){char*c=this->str;while(*c!=0,c++){if((*c>='a')&&(*c我已将导致段错误的行隔离到*c=*c-32但我不明白为什么这会导致问题。我尝试了(char)(*c-32)但这没有用。这也不是一个边界问题,因为没有任何输出。有什么想法吗?更新:我的构造函数Text(char*str){this->str=str;this->updateLength();//glorifiedstrle

c++ - 如何在不使用 toupper 函数的情况下将字符转换为大写

最近看到一段代码,将char转为小写,如果已经是小写,则保持原样。charc='A';c|='';//c->'a'我正在尝试编写一个代码,可以在不使用toupper的情况下将字符转换为大写。功能。目前我能想到的最简单的方法就是下面的代码。charc='a';c=(c|'')-'';//c->'A'所以我想知道是否有比这更直接的代码,并且可以获得相同的结果。感谢任何帮助。第一个代码块的快速解释Char|ASCIICode''|13'A'|65'a'|97和用于位操作的or运算符01000001(char'A')Or00100000(char'')=01100001(char'a')---

c++ - 为什么 std::FILE 是大写字母?

我想知道为什么C和C++的FILE类型拼写为大写字母。其他类型用小写字母拼写。编辑参见C++11的§27.9.2,表134 最佳答案 在非常古老的C方言中,在有任何标准化之前,当FILE类型被发明时,并且在typedef存在之前,该名称是一个宏:#defineFILEstruct_iobuf惯例是让宏以全部大写命名。http://minnie.tuhs.org/cgi-bin/utree.pl?file=V7/usr/include/stdio.h(小写的宏只是函数的优化版本——其中许多也作为适当的函数存在)

c++ - 使用 C++ 预处理器的大写字母 (x -> getX/setX)

我想定义一些属性,例如:#defineproperty(T,x)Tx;Tget##x();voidset##x(Tvalue);classfoo{public:property(int,count);property(float,size);}但我希望方法被称为getCount/setCount而不是getcount/setcount。 最佳答案 正如评论所说,你不能那样做。预处理器不会做这些事情。所以你要么按照@Shahbaz在第一条评论中所说的,要么做这样的事情,让你得到和设置get_count和set_count形式。#def

c++ - 如何在 Qt Creator 中添加名称以大写字母开头的 c++ 文件?它会自动使它成为小写字母

我正在尝试将一个c++文件添加到现有的Qt项目中,但我无法使c++文件的名称以大写字母开头。例如。使用向导自动将DownloadOsm.cpp变为downloadosm.cpp。 最佳答案 要解决此问题,请执行以下操作:[工具]->[选项]->[C++]->[文件命名]->取消选中“小写文件名” 关于c++-如何在QtCreator中添加名称以大写字母开头的c++文件?它会自动使它成为小写字母,我们在StackOverflow上找到一个类似的问题: https

c++ - 使用 std::transform 将字符串转换为所有大写字母

我正在使用转换算法和std::toupper来实现这一点,但是这可以像这样在一行中完成吗?transform(s.begin(),s.end(),ostream_iterator(cout,"\n"),std::toupper);我在这方面遇到了错误,所以我是否必须为此创建一个一元函数并使用转换调用它,或者我可以使用一些适配器? 最佳答案 使用ostream_iterator而不是ostream_iterator:transform(s.begin(),s.end(),ostream_iterator(cout,"\n"),std:

c++ - 使用 std::sort 对字符串进行排序,使大写字母位于小写字母之后

我想对一个vector进行排序,使大写字母跟在小写字母之后。如果我有类似的东西ThisisatestthisisatestCatscatsthisthing我希望输出是catsCatsthisisatestThisisatestthisthing标准库排序会输出CatsThisisatestcatsthisisatestthisthing我想将谓词传递给std::sort,以便它比较我作为参数传递的字符串的小写版本。boolcompare(std::stringx,std::stringy){returnlowercase(x)我尝试降低函数中的每个字符,然后进行比较,但没有成功。我想

c++ - 单词大写的最快方法

使用C++将单词(std::string)大写的最快方法是什么?在使用带有-O3标志的g++4.6.3的DebianLinux上,这个使用boost::to_lower的函数将在大约24秒内在AMDPhenom(tm)IIX61090T处理器(3200MHz)。voidCapitalize(std::string&word){boost::to_lower(word);word[0]=toupper(word[0]);}这个使用std::transform的函数在大约10秒内完成同样的事情。我在测试之间清除了VM,所以我不认为这种差异是侥幸:sync&&echo3>/proc/sys/

c++ - 当字符串可以是大写或小写时,C++ 中是否有用于 std::string 的内置函数来按字母顺序比较两个字符串?

我知道对于C++,如果两个词完全小写或完全大写,基本的比较运算符就可以完成任务。我有一个字符串数组,字母可以从低到高变化。这是我可以使用的字符串类型的一个小示例:“丰盛的生命”“新生命WMNMNSTRY”“新生活大会”我知道在Java中存在函数String.compareToIgnoreCase().是否有此函数的C++等效项? 最佳答案 我不知道标准库中有任何不区分大小写的函数,但您可以为std::equal指定自定义谓词:std::stringa("hello");std::stringb("HELLO");std::cout有