输出到文本文件时C++换行符

C++ New line character when outputting to a text file

本文关键字:C++ 换行符 文件 文本 输出      更新时间:2023-10-16

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

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

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

作家.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

任何帮助都非常感谢。 :)

没有合适的问题,我只能猜测你想学什么,所以请随时用实际问题更新你的"问题":

实际上是在文件中写入两个换行符,根据编码(即Windows或Unix换行符),您不会看到差异:

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

此外,您不必将std::endl传递给流,除非您确实想要在特定位置使用换行符:

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

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

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

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