我的程序使用以下命令从文本文件中读取一行:
std::ifstream myReadFile("route.txt");
getline(myReadFile, line)
如果它找到了我正在寻找的东西(标签),它就会将该行存储在一个临时字符串中。在找到其他标签之前,我不想继续此操作,如果我找到其他标签,我希望能够返回到上一行,以便程序再次读取其他标签并执行其他操作。
我一直在研究 putback() 和 unget() 我对如何使用它们以及它们是否可能是正确答案感到困惑。
最佳答案
最好考虑一种一次性算法,该算法将第一个标记可能需要的内容存储在内存中,而无需返回。
如果这不可能,您可以“添加书签”流位置并稍后使用 tellg()
检索它和 seekg()
:
streampos oldpos = myReadFile.tellg(); // stores the position
....
myReadFile.seekg (oldpos); // get back to the position
如果您阅读递归嵌入的标签(例如 html),您甚至可以使用 stack<streampos>
在阅读时插入和弹出位置。但是,请注意,此类前向/后向访问会降低性能。
关于c++ - 返回文本文件 C++ 上的一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27331272/