0

テキストファイルから読み取り、テキストファイル全体を出力する関数があります。このように見えます。

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

return output + "\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

4 に答える 4

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;
于 2013-08-06T16:43:26.357 に答える
0

output + '\n'ただの代わりに単に戻りoutputます。 '\n'改行文字のエスケープ コードです。

于 2013-08-06T16:43:55.763 に答える