我需要一个函数来返回一个只能以只读方式访问的字符串.字符串内容在编译时是已知的,因此无论如何我将使用字符串文字.
我可以返回类似的东西std::string:
std::string myFunction()
{
return "string";
}
Run Code Online (Sandbox Code Playgroud)
或返回const char*:
const char* myFunction()
{
return "string";
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,第二种替代方案是安全可移植的吗
Phi*_*ter 10
是! 但要注意这个潜在的问题:
char * myFunc() {
return "Constant string?";
}
Run Code Online (Sandbox Code Playgroud)
是的,您可以将字符串文字转换为非常量 char *!这将使您以后通过尝试修改其内容来打破世界char *.由于遗留原因,此"特征"存在 - 字符串文字比const更早,最初char *在C中定义.
谢天谢地,即使在默认模式下,g ++也会对此发出令人讨厌的警告.我不知道VC++是否会急切地发出警告.