我需要创建一个程序,从两个不同的文件中读取字符串,并将这些字符串写在新文件上。问题是,它必须交替两个文件,这意味着它应该从一个文件写一行,然后从另一个文件写一行,依此类推。
我的代码出现问题,它会写入第一个文件的第一行,然后写入第二个文件中的所有行。 谁知道如何解决这个问题?
do {
getline(archivo1, sLinea);
archivoS << sLinea << endl;
getline(archivo2, sLinea2);
archivoS << sLinea2 << endl;
} while (!archivo1.eof() && !archivo2.eof());
答案 0 :(得分:1)
代码看起来正确,应该在正常情况下工作。这可能是第二个文件编码的问题,其中在您的平台上不会识别换行符,这可能导致整个第二个文件被C ++标准库解释为单行。
Windows(CR + LF),Unix / Linux(LF)和Mac(CR)每个都有不同的换行约定。搜索跨平台的回车符和换行符,以了解有关此主题的更多信息。
要确定这是否是问题,请尝试在第一个文件的两个单独副本上运行代码,看它是否产生预期的输出?
如果你的问题是换行编码,你需要转换第二个文件以使用你的平台的换行编码(你可以使用像Notepad ++这样的工具轻松完成这项工作)或者将控制它的逻辑合并到你的计划。
答案 1 :(得分:0)
检查你的第二个文件。它很可能不包含行分隔符&#34; \ n&#34; ,每一行。最后可能只有一个