将char*转换为string*会发生什么?

char * ss = "abscd";
string * b = (string *) ss;
std::cout << ss << std::endl;
std::cout << *b << std::endl;

输出是:

abscd
//empty line

我以为会是:

abscd
abscd

回答

你一定是误会了什么。首先,你错过了const这里:

const char * ss = "abscd";

下一步,std::string是为了替换 c 字符串,就像你用ss. 然而,std::string是一个字符串,而std::string*是一个指向字符串的指针。由于std::string是不相关的char,只要指针之间的转换而言,你的代码中有未定义的行为。

要从std::stringc 字符串创建 a ,请使用其构造函数,例如:

std::string b{ss};

最后但并非最不重要的一点是,避免像这样的 c 风格强制转换string * b = (string *) ss;。您可以将任何内容转换为任何内容而不会出现编译器错误,但这并不意味着它是正确的。


以上是将char*转换为string*会发生什么?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>