C++ c++;按相反顺序逐行传输文件

C++ c++;按相反顺序逐行传输文件,c++,C++,我有一个代码,它应该以相反的顺序,一行一行地将一个文件传输到另一个文件中。但是,它不起作用。也许我忘了添加一些内容: while(cnvFile.good()) { getline(cnvFile, cnvPerLine); reverseFile << cnvPerLine; reverseFile.seekp(0, ios::beg); } while(cnvFile.good()){ getline(cnvFile、cnvPerLine); reve

我有一个代码,它应该以相反的顺序,一行一行地将一个文件传输到另一个文件中。但是,它不起作用。也许我忘了添加一些内容:

while(cnvFile.good()) {
    getline(cnvFile, cnvPerLine);

    reverseFile << cnvPerLine;
    reverseFile.seekp(0, ios::beg);
}
while(cnvFile.good()){
getline(cnvFile、cnvPerLine);

reverseFile当您从头开始并尝试写入时,您不是在插入数据,而是在覆盖数据。一个简单(尽管可能远不是最佳)的解决方案如下:

std::string reversedContents
while (getline(inFile, line)) {
    // This actually *appends* to the beginning, not overwriting
    reversedContents = line + "\n" + reversedContents; // manually add line breaks back in
}

// now write reversedContents to a file...

如果我的文件有3行“a,b\n x,y\n p,q\n”,那么您需要“p,q\n x,y\n a,b”?或者您还需要反转行中的元素,例如“q,p\n y,x\n b,a”?如果您从一开始就寻找一个输出文件,然后对其进行写入,您将覆盖以前写入的内容。@Dilawar是的,我需要类似“p,q\n x,y\n a,b”…@QuentinUK:谢谢您的帮助这是一个很好的例子,“玉米秸秆,嗨,先生,代码工作得很好,但是文件有几千条线,代码需要很长的时间,我们能做些什么来缩短时间吗?”JAA2013:用纯C++,没有很多。你可以扫描文件,手动寻找新行,然后阅读每一行,但是我不确定是否更有效。C++在这样的事情上给你非常有限的权力。任何“最佳”的解决方案都可能是平台/情境依赖的。C++中没有任何东西强迫你使用O(n ^ 2)算法来构造输出。向后扫描文件会更有效。(如果文件很大,则不需要将其保存在内存中)。使用std::strings的std::vector并向后迭代会更有效率。或者,如果您想向前迭代,可以使用std::deque。@rici在谷歌搜索时发现了一些东西。。正确的做法是使用vector更有效:stack line;string temp;while(getline(myFile,temp))line.push(temp);while(!line.empty()){reverseFile