我想尝试一个const char *
这是我将int转换为字符串并将其与const char *
连接的方法char tempTextResult[100];
const char * tempScore = std::to_string(6).c_str();
const char * tempText = "Score: ";
strcpy(tempTextResult, tempText);
strcat(tempTextResult, tempScore);
std::cout << tempTextResult;
打印时的结果是:分数:
有谁知道6为什么不打印?
提前致谢。
答案 0 :(得分:6)
正如docs for c_str
所说,&#34;通过进一步调用修改对象的其他成员函数,返回的指针可能无效。&#34;这包括析构函数。
const char * tempScore = std::to_string(6).c_str();
这使tempScore
指向不再存在的临时字符串。你应该这样做:
std::string tempScore = std::to_string(6);
...
strcat(tempTextResult, tempScore.c_str());
在这里,您在一个继续存在的字符串上调用c_str
。
答案 1 :(得分:0)
您已将此帖标记为C ++。
一种可能的C ++方法:(未编译,未经测试)
std::string result; // empty string
{
std::stringstream ss;
ss << "Score: " // tempText literal
<< 6; // tempScore literal
// at this point, the values placed into tempTextResult
// are contained in ss
result = ss.str(); // because ss goes out of scope
}
// ss contents are gone
// ... many more lines of code
// ... now let us use that const char* captured via ss
std::cout << result.c_str() << std::endl;
// ^^^^^^^ - returns const char*