廖茂生*_*廖茂生 0 c++ string pointers
char * ss = "abscd";
string * b = (string *) ss;
std::cout << ss << std::endl;
std::cout << *b << std::endl;
Run Code Online (Sandbox Code Playgroud)
输出是:
abscd
//empty line
Run Code Online (Sandbox Code Playgroud)
我以为会是:
abscd
abscd
Run Code Online (Sandbox Code Playgroud)
你一定是误会了什么。首先,你错过了const这里:
const char * ss = "abscd";
Run Code Online (Sandbox Code Playgroud)
下一步,std::string是为了替换 c 字符串,就像你用ss. 然而,std::string是一个字符串,而std::string*是一个指向字符串的指针。由于std::string是不相关的char,只要指针之间的转换而言,你的代码中有未定义的行为。
要从std::stringc 字符串创建 a ,请使用其构造函数,例如:
std::string b{ss};
Run Code Online (Sandbox Code Playgroud)
最后但并非最不重要的一点是,避免像这样的 c 风格强制转换string * b = (string *) ss;。您可以将任何内容转换为任何内容而不会出现编译器错误,但这并不意味着它是正确的。
| 归档时间: |
|
| 查看次数: |
106 次 |
| 最近记录: |