我有一个从文本文件中读取并输出整个文本文件的函数。 它看起来像这样;
string FileInteraction :: read() const
{
ifstream file;
string output;
string fileName;
string line;
string empty = "";
fileName = getFilename();
file.open(fileName.c_str());
if(file.good())
{
while(!file.eof())
{
getline(file, line);
output = output + line ;
}
file.close();
return output;
}
else
return empty;
};
我这样称呼函数;
cout << FI.read(); //PS I cant change the way it's called so I can't simply put an endl here
如果我使用 返回输出+“\ n”
我将此作为输出
-- Write + Read --
This is the first line. It should disappear by the end of the program.
-- Write + Read --
This is another line. It should remain after the append call.
This call has two lines.
我不希望那些行之间有空间。
所以在调用函数后我需要结束这一行。 我怎么能在函数中做到这一点?
PS。此外,如果有更好的方式输出文本文件中的所有内容而不是我的方式,我将不胜感激任何建议。
答案 0 :(得分:3)
只需更改
return output;
到
return output + "\n";
答案 1 :(得分:2)
此:
所以在调用函数后我需要结束这一行。怎么能 我在函数中做到了吗?
是荒谬的。在调用函数后应该在函数内执行任何操作。如果调用代码没有发送std::endl
到cout
,这是调用代码的问题,你不能 - 也不应该 - 尝试在你的函数中解决这个问题
答案 2 :(得分:0)
简化为:
std::string fileName = getFilename();
std::ifstream file(fileName.c_str());
std::string output;
std::string line;
while (getline(file, line))
output.append(line);
output.append(1, '\n');
return output;
答案 3 :(得分:0)
只需返回output + '\n'
而不只是output
。
'\n'
是换行符的转义码。