我不得不停止編碼這麼多項目,因爲這個奇怪的怪癖,我厭倦了足夠的問題和風險看起來像一個白癡,所以這裏去...爲什麼從函數返回一個C字符串會導致隨機字符?
我寫了這樣的功能:
const char* readFileToString(const char* filename) {
const char* result;
std::ifstream t(filename);
std::stringstream buffer;
buffer << t.rdbuf();
result = buffer.str().c_str();
return result;
}
我預計,如果file.txt
包含hello
,即readFileToString("file.txt")
應該返回hello
。相反,它會返回符合H�rv�0
行的亂碼文本。但是,如果我在退貨之前放置了std::cout << result;
,它將打印hello
。
這是一些奇怪的,不可思議的C++嗎?我如何解決它?
返回指針到本地或臨時變量是很少的好理念。只需使用std :: string,由值返回。 –