C++ 返回文本文件C++;
我的程序使用以下命令从文本文件中读取一行:C++ 返回文本文件C++;,c++,file,getline,C++,File,Getline,我的程序使用以下命令从文本文件中读取一行: std::ifstream myReadFile("route.txt"); getline(myReadFile, line) 如果它发现了我正在寻找的东西(标记),它会将该行存储在临时字符串中。在找到其他标记之前,我不想继续此操作,如果我找到其他标记,我希望能够返回到前一行,以便程序再次将if作为其他标记读取并执行其他操作 我一直在看putback()和unget(),我不知道如何使用它们,以及它们是否是正确的答案 到目前为止,如果你只想后退一行
std::ifstream myReadFile("route.txt");
getline(myReadFile, line)
如果它发现了我正在寻找的东西(标记),它会将该行存储在临时字符串中。在找到其他标记之前,我不想继续此操作,如果我找到其他标记,我希望能够返回到前一行,以便程序再次将if作为其他标记读取并执行其他操作
我一直在看putback()和unget(),我不知道如何使用它们,以及它们是否是正确的答案 到目前为止,如果你只想后退一行,最简单的方法就是始终跟踪你所在的行和之前的行 维护存储当前行的
cur
变量和存储上一行的prev
。移动到下一行时,将cur
复制到prev
,并将新行读取到cur
这样,你总是有前一行可用。
最好是考虑一个一遍算法,它存储在第一个标签上可能需要的东西而不返回。p> 如果不可能,您可以将流位置“添加书签”,然后使用和检索它:
如果您读取递归嵌入的标记(例如html),您甚至可以在读取时使用一个按钮来推动和弹出位置。但是,请注意,这种前向/后向访问会降低性能 您提到和,但它们仅限于一个字符,似乎不适合您的getline()
方法。我认为与您刚才阅读的行的长度一致可能会有所帮助。
streampos oldpos = myReadFile.tellg(); // stores the position
....
myReadFile.seekg (oldpos); // get back to the position