草庐IT

ordering_chars

全部标签

c++ - const char*, char const*, const char const* & 字符串存储的区别

首先,有什么区别:(1)constchar*(2)charconst*(3)constcharconst*我相当确定我完全理解这一点,但我希望有人能具体地给我一个句子,这样它就会牢记在心。这是我很好的事情之一,直到有人让我当场然后它变得模糊!此外,编译器如何存储字符串文字?这不是家庭作业,我只是为了面试复习C语言,以防有人关心。 最佳答案 (1)constchar*(2)charconst*这是一个(您可以更改)指向您无法更改的字符(或多个字符)的指针。换句话说,所有字符串文字。(3)constcharconst*这是加倍的。我想你

c++ - 为什么指向 char 数组的指针必须需要 strcpy 才能将字符分配给它的数组,而双引号分配不起作用?

当您去删除指针时,第一个示例不起作用。该程序要么在我添加空终止符时挂起,要么没有它我得到:调试断言失败表达式:_BLOCK_TYPE_IS_VALID(pHead->nBlockUse)来自VisualStudio2008//Won'tworkwhendeletingpointer:char*at=newchar[3];at="tw";//那么当我使用双引号而不是strcpy时会发生什么?它们都将完美地计算出字符串,并且调试器不会显示任何不同。 最佳答案 当你做的时候char*at=...;at="hello";您基本上是用静态常量

c++ - 为什么编译器不能像在变量声明中那样在结构成员中设置 char[] = { .. } 的大小?

这个问题在这里已经有了答案:Whatisthereasonfornotbeingabletodeducearraysizefrominitializer-stringinmembervariable?(3个答案)关闭5年前。我在结构中使用带有初始化值的struct,如下例所示。我不明白的是为什么编译器不能像在变量声明中那样在结构成员中设置char[]={..}的大小?Clang++给出以下错误:error:arrayboundcannotbededucedfromanin-classinitializer代码:structA{chars[]={'F','O','O',...};};

c++ - 返回 char 数组作为 std :string

如果没有显式转换或调用std::string构造函数,以下内容是否安全?如果不安全,为什么不呢?std:stringmyfunc(){charbuf[128]="";//putsomethingintobufornotbaseonlogic.returnbuf;} 最佳答案 是的。那很好。调用者将获得本地缓冲区的拷贝,因为std::string会从该本地缓冲区中进行深度复制!编辑:我假设buf是空终止字符串! 关于c++-返回char数组作为std:string,我们在StackOver

C++ - 如何将 char append 到 char*?

我已经在Internet上尝试了多种将字符append到char*的方法,但它们似乎都不起作用。这是我的不完整解决方案之一:char*appendCharToCharArray(char*array,chara){char*ret="";if(array!=""){char*ret=newchar[strlen(array)+1+1];//+1char+1fornull;strcpy(ret,array);}else{ret=newchar[2];strcpy(ret,array);}ret[strlen(array)]=a;//(1)ret[strlen(array)+1]='\0'

c++ - 带有大括号的 char 数组的非静态成员初始化在 gcc 中给出了一个错误,而不是在 clang 中

考虑以下代码:#includeclassA{charname[40]={"Blank"};//notethebracesherepublic:constchar*getName(){returnname;}};intmain(){Aa;std::cout它在gcc(最新版本5.2.0)中给出错误:prog.cpp:5:28:error:invalidconversionfrom'constchar*'to'char'[-fpermissive]charname[40]={"Blank"};^但clang并非如此,它可以使用-std=c++11-pedantic-Wall完美编译。在这里

c++ - 为什么构造函数在使用 CHAR 类型的参数调用时选择类型 INT 而不是 SHORT?

可以看出,在下面的代码中,正在调用参数类型为int的构造函数。我知道int在这里没问题。但为什么不short呢?作为'A'的ASCII值给出short可以容纳的65。根据什么条件调用数据类型为int的构造函数?#includeclassRightData{intx;public:RightData(shortdata){cout 最佳答案 integralpromotion的结果对于char是int(不是short);和促销(例如char->int)有更高的rankingoverloadresolution中的其他转换(例如char

c++ - 将空终止的 const char* 字符串数组转换为 std::vector< std::string >

我有一个VisualStudio2008C++函数,我在其中获得了一个空终止字符串数组constchar*以及该数组中字符串的数量。我正在寻找一种巧妙的方法来转换constchar*的数组在std::vector///@paramcount-numberofstringsinthearray///@paramarray-arrayofnull-terminatedstrings///@return-avectorofstlstringsstd::vectorConvert(intcount,constchar*array[]);Boost可以,STL可以。

c++ - 如何使用十六进制数初始化 char 数组?

我使用utf8并且必须在char数组中保存一个常量:constchars[]={0xE2,0x82,0xAC,0};//theeurosign但是它给我错误:test.cpp:15:40:error:narrowingconversionof‘226’from‘int’to‘constchar’inside{}[-fpermissive]我必须将所有十六进制数都转换为char,我觉得这很乏味,而且闻起来也不好。还有其他正确的方法吗? 最佳答案 char可以是signed或unsigned(默认是特定于实现的)。你可能想要constu

c++ - 如何将 boost::filesystem::directory_iterator 转换为 const char *

我想遍历目录中的所有文件并打印它们的内容。Boost很好地处理了迭代部分,但我不知道如何将其转换为constchar*。boost::filesystem::directory_iteratorpath_it(path);boost::filesystem::directory_iteratorend_it;while(path_it!=end_it){std::cout我试图阅读这个documentation但找不到类似string或c_str()的内容。我是C++和boost的新手,希望能找到一些类似javadoc的文档,基本上可以告诉我成员是什么,是什么函数可用而不是转储源代码。