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

时间:2016-01-30 04:18:42

标签: c++ string file text

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

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

do {

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

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

2 个答案:

答案 0 :(得分:1)

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

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

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

如果你的问题是换行编码,你需要转换第二个文件以使用你的平台的换行编码(你可以使用像Notepad ++这样的工具轻松完成这项工作)或者将控制它的逻辑合并到你的计划。

答案 1 :(得分:0)

检查你的第二个文件。它很可能不包含行分隔符&#34; \ n&#34; ,每一行。最后可能只有一个