C ++用字符串连接const char *,只打印const char *

时间:2016-02-08 17:11:46

标签: c++ string char

我想尝试一个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为什么不打印?

提前致谢。

2 个答案:

答案 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*