您最喜爱的技术社区。浏览所有集合
提出问题,找到答案,并与团队堆栈溢出协作。
提出问题,找到答案,并与团队堆栈溢出协作。探索团队
查找集中的、值得信赖的内容,并围绕您最常用的技术进行协作。
团队
工作问答
在一个结构化且易于搜索的位置内连接和共享知识。
尽早访问并查看新功能的预览。
我想知道为什么即使sting是char数组类型,std::string::c_str()也会返回constchar*type。
字符串s(“你好”);
有一个字符串。它由字符型数组和
s[1]=“a”;
我还可以如上所述更改元素。然而,如果我调用c_str()来知道字符串对象中字符串的起始地址,它将返回constchar*type。
因此,我必须使用strcpy()将其转换为char-type数组。
为什么它返回常量类型?
使某些原语不可变有助于提高效率。如果编译器知道不允许更改值,它可以以不可能用于可变值的方式进行优化。
类似地,使用K&R首次构建C时不存在的新CPU内存保护功能,可以防止常量值发生缓冲区溢出。
这些是拥有不可变String原语的一些参数。
另请参见:https://stackoverflow.com/a/28442823/1168588