我的程序使用以下方法从文本文件中读取一行:
std::ifstream myReadFile("route.txt");
getline(myReadFile, line)
Run Code Online (Sandbox Code Playgroud)
如果它找到我正在寻找的东西(标签),它会将该行存储在临时字符串中.我不想继续这个,直到我找到一些其他标签,如果我找到另一个标签,我希望能够返回到前一行,以便程序读取再次作为其他标签,并做其他事情.
我一直在看putback()和unget()我很困惑如何使用它们,如果它们可能是正确的答案.
Chr*_*phe 11
最好的方法是考虑一次性算法,该算法在内存中存储第一个标签可能需要的内容而不返回.
如果这是不可能的,你可以在"书签"的流位置和retreive它后来与tellg()和seekg():
streampos oldpos = myReadFile.tellg(); // stores the position
....
myReadFile.seekg (oldpos); // get back to the position
Run Code Online (Sandbox Code Playgroud)
如果您阅读递归嵌入式标签(例如html),您甚至可以stack<streampos>在阅读时使用a 来推送和弹出位置.但是,请注意,此类前向/后向访问会降低性能.
你提到putback()并且unget(),但这些仅限于一个字符,并且似乎不适合您的getline()方法.
| 归档时间: |
|
| 查看次数: |
10962 次 |
| 最近记录: |