私は愚かな人のように見える危険性があるので、愚かな人に尋ねる危険性があるので、これほど多くのプロジェクトをコーディングするのを止めなければならなかった。関数から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を使用してください。 –