这只是一个简单的问题。但我正在尝试将数据输出到文件,这工作正常。 但是,我也试图在适当的位置实现一个新行,以便数据打印在各行上。
这就是我的代码目前的样子:
的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
非常感谢任何帮助。 :)
答案 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
来达到预期的效果。