2

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

这是我的代码当前的样子:

主文件

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();

编写器.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

任何帮助是极大的赞赏。:)

4

2 回答 2

8

如果没有正确的问题,我只能猜测您要学习什么,因此请随时用实际问题更新您的“问题”:

您实际上是在文件中写入两个换行符,具体取决于编码(即 Windows 或 Unix 换行符),您不会看到区别:

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

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

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

请记住,根据您的编辑器,您可能不会看到所有的换行符,例如 Windows 记事本不会显示只有\n. 相反,它将显示为一个不可见的字符。对于被接受的实际换行符,你会 beed \r\n。相比之下,开源编辑器 Notepad++ 接受并显示这两种换行符。

于 2012-11-16T11:44:29.590 回答
0

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

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

于 2012-11-16T11:46:41.113 回答