草庐IT

C++ 字符串为什么不能用作 char 数组?

intmain(){stringa;a[0]='1';a[1]='2';a[2]='\0';cout为什么这段代码不起作用?为什么不打印字符串? 最佳答案 因为a是空的。如果您尝试对空数组做同样的事情,您会遇到同样的问题。你需要给它一些尺寸:a.resize(5);//Nowais5charslong,andyoucansetthemhoweveryouwant或者,您可以在实例化a时设置大小:std::stringa(5,'');//Nowthereare5spaces,andyoucanuseoperator[]tooverwr

c++ - int main(int, char const* const*) 格式正确吗?

根据C++11标准,下列程序是否为良构且可移植的C++?intmain(intargc,charconst*const*argv){} 最佳答案 没有。在纯可移植C++程序中,argv参数(如果存在)没有const修饰符。编辑:请参阅C++11标准草案第3.6.1.2节,其中(在我之前的版本中)指出:Animplementationshallnotpredefinethemainfunction.Thisfunctionshallnotbeoverloaded.Itshallhaveareturntypeoftypeint,buto

c++ - 如何使用省略尾随 '\0' 的字符串文字初始化 std::array<char, N>

我有一个文件结构,其中固定长度的字符串没有尾随零。如何将字段初始化为不带尾随零的std::array:#pragmapack(push,1)structData{//Compiles,butithasanundesired'\0':std::arrayundesired_number{"12345"};//Doesnotcompile:std::arraynumber{"12345"};//stripping'\0'};#pragmapack(pop) 最佳答案 制作辅助函数templateconstexprstd::arrayto

c++ - __FILE__ 可以在 C++ 中被 const char* 引用吗?

阅读从http://www.almostinfinite.com/memtrack.html链接的memTrack库后我有一个问题__FILE__可以保存在类型为constchar*的变量中forever并且不需要使用strdup()?BlockHeader::Stamp不是使用strdup()来分配__FILE__字符串吗?voidBlockHeader::Stamp(charconst*filename,intlineNum,charconst*typeName){myFilename=filename;//don'tusestrdup(filename)toassign?myLi

c++ - make 失败,返回错误 "cannot convert ‘std::istream {aka std::basic_istream<char>}’ 到 ‘bool’”

我正在尝试从源代码编译libgtextutils(fastxtoolkit需要)。“./configure”命令运行良好,但随后的“make”命令产生了一个我无法解决的错误。text_line_reader.cpp:Inmemberfunction‘boolTextLineReader::next_line()’:text_line_reader.cpp:47:9:error:cannotconvert‘std::istream{akastd::basic_istream}’to‘bool’inreturnreturninput_stream;^~~~~~~~~~~~make[3]:*

c++ - 是否可以使用 std::basic_string 作为 char* 的包装器?

我有第三方库返回由strdup(和分别是wcsdup函数)在其中创建的char*(和wchar_t*)。我想避免在代码末尾手动调用free。是否可以为std::basic_string编写一个分配器,以便它可以处理这个库返回的c字符串?理想情况下,我根本不想分配任何新内存并使用返回的内存块(字符串应该是常量)。 最佳答案 遗憾的是,std::string有自己的内存管理,不能重用分配的字符串。您可以将它们复制到std::string并立即删除它们,但这将调用您试图避免的所有行为。您可以做的是立即声明一个带有自定义删除器的unique

c++ - char* 和 wchar_t* 的区别

我是MFC新手。我正在尝试做简单的mfc应用程序,但我在某些地方感到困惑。例如,SetWindowText有两个api,SetWindowTextA,SetWindowTextW一个api接受char*,另一个接受wchar_t*.char*和wchar_t*有什么用? 最佳答案 char用于所谓的ANSI函数系列(通常函数名称以A结尾),或者更常见的是使用ASCII字符集。wchar_t用于新的所谓的Unicode(或Wide)函数系列(通常函数名称以W结尾),它们使用UTF-16字符集。它与UCS-2非常相似,但又不完全相同。如

c++ - 如何将 const char* 转换为字符串,然后再转换回 char*?

我刚开始使用C++,很难理解constchar*。我正在尝试将方法中的输入转换为string,然后更改字符串以在我想要的位置添加连字符并最终获取该字符串并将其转换回char*返回。到目前为止,当我尝试这个时,它给我一个总线错误10。char*getHyphen(constchar*input){stringvowels[12]={"A","E","I","O","U","Y","a","e","i","o","u","y"};//convertchar*tostringstringa;inti=0;while(input!='\0'){a+=input[i];input++;i++;}

c++ - 为什么 char 既没有符号也没有符号,而 wchar_t 是?

下面的C++程序编译没有错误:voidf(char){}voidf(signedchar){}voidf(unsignedchar){}intmain(){}同一程序的wchar_t版本不会:voidf(wchar_t){}voidf(signedwchar_t){}voidf(unsignedwchar_t){}intmain(){}错误:‘voidf(wchar_t)’的重新定义voidf(signedwchar_t){}wchar_t似乎是unsigned。为什么重载会出现不一致? 最佳答案 char都是不同的类型,可以重载[

c++ - 通过 bool 进行的 char 往返转换会发生什么情况?

关于将char转换为bool然后再次转换回char,C++语言定义promise什么?charoriginal=255;boolnext=original;charfinal=next;此外,在这种情况下,除了语言保证的内容之外,大多数编译器会做什么? 最佳答案 这将给出零值或一值,具体取决于原始值是零还是非零。转换为bool给出true或false的值:4.12Azerovalue,nullpointervalue,ornullmemberpointervalueisconvertedtofalse;anyothervalueis