C ++ - 在文本文件上写入时代码无法交替行

Posted

技术标签:

【中文标题】C ++ - 在文本文件上写入时代码无法交替行【英文标题】:C++- Code not working to alternate lines when writing on a text file 【发布时间】:2016-01-30 04:18:41 【问题描述】:

我需要创建一个程序,从两个不同的文件中读取字符串并将这些字符串写入一个新文件。问题是,它必须交替两个文件,这意味着它应该从一个文件写入一行,然后从另一个文件写入一行,依此类推。

我的代码有问题,它写入第一个文件的第一行,然后写入第二个文件的所有行。 有谁知道如何解决这个问题?

do 

    getline(archivo1, sLinea);
    archivoS << sLinea << endl;
    getline(archivo2, sLinea2);
    archivoS << sLinea2 << endl;

    while (!archivo1.eof() && !archivo2.eof());

【问题讨论】:

无法复制。 Works for me 【参考方案1】:

代码看起来正确,在正常情况下应该可以工作。这可能是第二个文件的编码问题,换行符在您的平台上无法识别,这可能导致整个第二个文件被 C++ 标准库解释为单行。

Windows (CR+LF)、Unix/Linux (LF) 和 Mac (CR) 都有不同的换行约定。跨平台搜索回车符和换行符以了解有关此主题的更多信息。

要确定这是否是问题所在,请尝试在第一个文件的两个单独副本上运行代码,看看它是否产生预期的输出?

如果换行编码是您的问题,您需要将第二个文件转换为使用您平台的换行编码(您可以使用 Notepad++ 之类的工具轻松完成此操作),或者将控制此操作的逻辑合并到您的程序中。

【讨论】:

【参考方案2】:

检查您的第二个文件。它很可能不包含每行的行分隔符 "\n" 。最后可能只有一个

【讨论】:

以上是关于C ++ - 在文本文件上写入时代码无法交替行的主要内容,如果未能解决你的问题,请参考以下文章

Android 12.0 Toast消息框上限为两行文本(超出显示省略号)并且在文本左边显示应用图标

Android 12.0 Toast消息框上限为两行文本(超出显示省略号)并且在文本左边显示应用图标

Android 12.0 Toast消息框上限为两行文本(超出显示省略号)并且在文本左边显示应用图标

在Objective c中两行文本的末尾添加一个链接/ UI按钮

检测换行符以在 iOS 上的 UITextView 上自动输入换行文本

如何在 QPlainTextEdit 小部件中突出显示整行文本?