2013-08-02 83 views
0

我將字符串流的字符串轉換爲字符指針,但它寫入空字符串。 它爲什麼會失敗?將字符串轉換爲字符指針返回空字符串

std::stringstream ss; 
ss << "de12mu"; 
char* msg = (char*)ss.str().c_str(); 
std::cout << "msg: " << msg << " " << strlen(msg) << std::endl; 
+1

未定義的行爲,如果我看到它。順便說一句,右邊的第一個相關問題:http://stackoverflow.com/questions/1374468/c-stringstream-string-and-char-conversion-confusion?rq=1 – chris

回答

1

這是因爲你對ss.str()調用返回臨時字符串,當你再拿到一個指針臨時字符串的語句完成後,將是無效的。

臨時字符串銷燬後使用該指針是未定義的行爲。請注意0​​函數返回const char*