我有一个数字,需要将其转换为const char * (我正在使用的API需要const char *作为它的许多函数的输入)。以下工作:
int num = 5;
std::string s = std::to_string(5);
const char * p = s.c_str();正如类似于?中的答案所建议的,但它涉及创建看似不必要的变量s,因此我尝试了以下操作,但它不起作用(p指向后面的空字符串):
int num = 5;
const char * p = std::to_string(num).c_str();我有办法做到这一点吗?为什么第二个例子不起作用?如果我犯了这个明显的错误,这种行为非常类似于发生了什么:
const char * p;
{
std::string tempStr( "hi" );
p = tempStr.c_str( );
// p points to "hi" string.
}
// now p points to "" string.这使我怀疑,std::to_string(num)问题立即超出了范围或类似的范围,因为它不用于直接初始化任何内容。
发布于 2017-09-23 04:40:20
在任何地方使用std::string,不使用const char*时不要使用。他们基本上是一样的。我只在使用文件路径时才使用const char*。在任何地方使用std::string,您的程序就会正常工作。
https://stackoverflow.com/questions/46376043
复制相似问题