C ++输出到文本文件时的新行字符

时间:2012-11-16 11:38:09

标签: c++ file newline output

这只是一个简单的问题。但我正在尝试将数据输出到文件,这工作正常。 但是,我也试图在适当的位置实现一个新行,以便数据打印在各行上。

这就是我的代码目前的样子:

的main.cpp

Writer w("Output.txt");
    w.writeString("The number of words in the script are: ");
    w.writeInt(count);
    w.writeEol();
    w.writeString("The number of Officers in the script are: ");
    w.writeInt(ofCount);
    w.writeEol();
    w.writeString("The number of Courtiers in the script are: ");
    w.writeInt(cCount);
        w.close();

Writer.cpp

void Writer::writeEol()
{
    out << "\n" << endl;
}

我的代码必须以这种方式实现,因为我的整个系统是围绕它构建的。

所以我的问题是,如何调整我的Writer :: writeEol()以在输出文件中添加新行?

我的输出文件目前是这样的:

    The number of words in the script are: 32339The number of Officers in the script are: 2The number of Courtiers in the script are: 9

非常感谢任何帮助。 :)

2 个答案:

答案 0 :(得分:7)

如果没有正确的问题,我可以猜测您正在尝试学习的内容,请随时用实际问题更新您的“问题”:

你实际上是在文件中写了两个换行符,这取决于编码(即Windows或Unix换行符),你不会看到差异:

std::endl会自动包含正确的字符来创建换行符。也没有必要写"\n"

除非你真的想要在特定位置换行,否则你不必将std::endl传递给流:

std::cout << "The result is: ";
std::cout << 50 << std::endl;

请注意,根据您的编辑器,您可能看不到所有换行符,例如Windows记事本不会显示仅包含\n的换行符。它将显示为一个不可见的角色。对于接受的实际换行符,您需要\r\n。相比之下,开源编辑器Notepad ++接受并显示两种换行符。

答案 1 :(得分:0)

writeEol()方法中,您输出换行符(\n),然后写出std::endl。这两者都具有写出换行符的效果,这就是你想要的。但是,std::endl也会刷新流,这在某些情况下是不可取的(如果在每行之后刷新流,则可能导致速度减慢)。

我认为你的代码会做你想要的(尽管有两个换行符),但正如shuttle87所述,你只需要在每一行的末尾加\n来达到预期的效果。