Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 返回文本文件C++;_C++_File_Getline - Fatal编程技术网

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