如何创建一个声明为字符串的函数结束该行

时间:2013-08-06 16:38:49

标签: c++ string function endl

我有一个从文本文件中读取并输出整个文本文件的函数。 它看起来像这样;

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。此外,如果有更好的方式输出文本文件中的所有内容而不是我的方式,我将不胜感激任何建议。

4 个答案:

答案 0 :(得分:3)

只需更改

return output;

return output + "\n";

答案 1 :(得分:2)

此:

  

所以在调用函数后我需要结束这一行。怎么能   我在函数中做到了吗?

是荒谬的。在调用函数后应该在函数内执行任何操作。如果调用代码没有发送std::endlcout,这是调用代码的问题,你不能 - 也不应该 - 尝试在你的函数中解决这个问题

答案 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'是换行符的转义码。