草庐IT

months3char

全部标签

C++,需要错误 : cannot convert parameter 1 from 'char *' to 'const char *&' 的原因

我们不能将指针转换为字符->TO->对指向常量字符的指针的引用我很想知道调用foo_ptr时出现语法错误的原因。当foo_char被允许时,为什么不foo_ptr。[更新1.]我很高兴知道foo_char()工作的原因,为什么foo_ptr()不工作..当指针进入时会发生什么图片。[更新2。]在DevC++编译器版本4.9.9.2中也没有工作..//code//OS:WinXP//Env:VC++2008//NOTALLOWEDvoidfoo_ptr(constchar*&ptr)//referencetoapointertoaconstantcharacter{return;}//a

c++ - 从 unsigned char* 到 char* 的无效转换

这是一个代码-1intmain(intargc,char*argv[])2{3signedcharS,*psc;4unsignedcharU,*pusc;5charC,*pc;67C=S;8C=U;910pc=psc;11pc=pusc;1213return0;14}$gcctest.cpp-oatest.cpp:Infunction‘intmain(int,char**)’:test.cpp:10:7:error:invalidconversionfrom‘signedchar*’to‘char*’[-fpermissive]test.cpp:11:7:error:invalidco

c++ - 标准对 char 数组作为模板参数有什么看法?

在研究thisquestion的答案期间我发现(我之前不知道)gcc和clang允许char数组作为模板参数,如果它们被声明为static。例如。此代码使用gcc和clang编译:#includetemplateautofoo(){ifconstexpr(string[0]=='i')return0;elsereturn3.14f;}voidbar(){staticconstexprcharstring1[]="int";staticconstexprcharstring2[]="float";autoi=foo();autof=foo();static_assert(std::is_

c++ - 在 C++ 中将 std::wstring 转换为 const *char

如何在C++中将std::wstring转换为const*char? 最佳答案 您可以使用c_str成员函数将std::wstring转换为constwchar_t*:std::wstringwStr;constwchar_t*str=wStr.c_str();然而,转换成constchar*并不自然:它需要额外调用std::wcstombs,例如:#include//...std::wstringwStr;constwchar_t*input=wStr.c_str();//Countrequiredbuffersize(pluso

c++ - 将字符串文字分配给 char*

这个问题在这里已经有了答案:关闭10年前.PossibleDuplicate:Howtogetridofdeprecatedconversionfromstringconstantto‘char*’warningsinGCC?这个作业:char*pc1="teststring";给我这个警告:warning:deprecatedconversionfromstringconstantto'char*'虽然这个看起来不错:char*pc2=(char*)("teststring");这是一种真正更好的方法吗?注意:由于其他原因,我不能使用constchar*。

c++ - 字符串文字和 char 的 constexpr 数组之间的区别

我一直想知道在以下示例中ptrToArray和ptrToLiteral指向的内容是否有任何区别:constexprcharconstExprArray[]="hello";constchar*ptrToArray=constExprArray;constchar*ptrToLiteral="hello";我的理解是constExprArray和两个"hello"文字都是编译时常量左值正确吗?如果是这样,它们在可执行文件中的存储方式有什么不同,还是纯粹的编译器实现或平台特定?它们在运行时在幕后的处理方式是否不同?还有什么要了解的吗? 最佳答案

c++ - 如何在我的程序中找到 "const char* + int"表达式

我正在进行源代码迁移,转换器程序没有将嵌入字符串的串联转换为整数。现在我有很多带有这种表达式的代码:f("sometext"+i);由于C/C++会将其解释为数组下标,因此f将接收"sometext"或"ometext",或“我的文字”...我的源语言将字符串与int的串联转换为字符串串联。现在我需要逐行浏览源代码并手动将前面的表达式更改为:f("sometext"+std::to_string(i));转换程序设法将本地“String”变量转换为“std::string”,得到表达式:std::stringsome_str=...;inti=...;f(some_str+i);这些很

C++ char 数组空终止符位置

我是一名学习C++的学生,我正在尝试了解以空字符结尾的字符数组的工作原理。假设我像这样定义一个char数组:char*str1="helloworld";正如预期的那样,strlen(str1)等于11,并且是以null结尾的。如果上述char数组的11个元素都用字符“helloworld”填充,C++将空终止符放在哪里?它实际上是否分配了一个长度为12而不是11的数组,第12个字符是'\0'?CPlusPlus.com似乎表明11个中的一个需要是'\0',除非它确实分配了12。假设我执行以下操作://Createanewchararraychar*str2=(char*)malloc

c++ - 将 std::string 转换为 C 函数的 char* 时要注意什么?

我读过很多帖子,询问如何将C++std::string或conststd::string&转换为char*将其传递给C函数,似乎有很多关于这样做的警告。必须注意字符串是连续的以及许多其他事情。关键是我从来没有真正理解所有需要注意的点以及为什么?我想知道是否有人可以总结从std::string到需要传递给C的char*转换的注意事项和缺点功能?当std::string是一个const引用并且它只是一个非常量引用并且C函数将改变char时*以及何时不会改变它。 最佳答案 首先,无论是const引用还是value都不会改变任何东西。然后您

c++ - 如何将字符串与 const char* 进行比较?

#include#include#include#includeusingnamespacestd;intmain(){stringcmd;while(strcmp(cmd.c_str(),"exit")==0&&strcmp(cmd.c_str(),"\exit")==0){cin>>cmd;cout我被卡住了。 最佳答案 std::string实例可以使用!=或==运算符直接与字符串文字进行比较。这使您的比较更加清晰。请注意,\e不是有效的字符转义,如果您的意思是文字\\,则需要将\加倍。while(cmd=="exit"&&c