【发布时间】:2015-11-26 12:51:16
【问题描述】:
我有一个读取文件并返回字符串的函数。
string get_file_contents(const char *filename)
{
ifstream in(filename);
if (in)
{
ostringstream contents;
contents << in.rdbuf();
in.close();
return(contents.str());
}
throw(errno);
}
我读取了一个仅包含 success 的文件,并以两种不同的方式将其返回值转换为 c 样式字符串,结果不同。
string str = get_file_contents("test.txt");
const char* str1 = str.c_str();
cout << "printing str1: ";
cout << str1 << endl;
const char* str2 = get_file_contents("test.txt").c_str();
cout << "printing str2: ";
cout << str2 << endl;
输出:
printing str1: success
printing str2:
我不明白为什么 str2 是空的。任何见解都值得赞赏。
【问题讨论】: