0
我將字符串流的字符串轉換爲字符指針,但它寫入空字符串。 它爲什麼會失敗?將字符串轉換爲字符指針返回空字符串
std::stringstream ss;
ss << "de12mu";
char* msg = (char*)ss.str().c_str();
std::cout << "msg: " << msg << " " << strlen(msg) << std::endl;
我將字符串流的字符串轉換爲字符指針,但它寫入空字符串。 它爲什麼會失敗?將字符串轉換爲字符指針返回空字符串
std::stringstream ss;
ss << "de12mu";
char* msg = (char*)ss.str().c_str();
std::cout << "msg: " << msg << " " << strlen(msg) << std::endl;
這是因爲你對ss.str()
調用返回臨時字符串,當你再拿到一個指針臨時字符串的語句完成後,將是無效的。
臨時字符串銷燬後使用該指針是未定義的行爲。請注意0函數返回const char*
。
未定義的行爲,如果我看到它。順便說一句,右邊的第一個相關問題:http://stackoverflow.com/questions/1374468/c-stringstream-string-and-char-conversion-confusion?rq=1 – chris