Sit*_*esh 0 c++ string copy char
以下代码示例行为未定义..
char * getName()
{
std::string name("ABCXYZ");
return name.c_str();
}
Run Code Online (Sandbox Code Playgroud)
这是因为名称超出了范围.但是我想了解当我们返回一个std :: string并且它不会产生未定义的行为时它是如何不同的?
当您return
有值时,该值将安全地返回给调用者.这就是return
声明的作用.
在您调用的情况下,您c_str
返回的值是指向字符串的指针.一旦字符串被销毁,该指针现在指向任何特定的东西.该值是安全返回,它只是没有什么你可以用它做安全.
a的值string
是字符串的内容.所以在这种情况下,它是传递给调用者的字符串的内容.可以说,std::string
该类的主要目的是提供一个对象,其值是字符串的内容.