【发布时间】:2017-09-20 05:45:15
【问题描述】:
我不得不停止编写这么多项目,因为我受够了这个奇怪的怪癖,我已经受够了去问和冒着看起来像个白痴的风险,所以这里......
我写了一个这样的函数:
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,按值返回。