在文本文件C++上返回一行
Go back one line on a text file C++
我的程序使用以下方法从文本文件中读取一行:
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>
来推送和弹出位置。但是,请注意,此类向前/向后访问会降低性能。
您提到了putback()
和unget()
,但这些仅限于一个字符,似乎不适合您的getline()
方法。
到目前为止,如果您只想回滚一行,最简单的事情就是始终跟踪您所在的行和之前的行。
维护一个存储当前行的cur
变量和存储前一行的prev
变量。当您移动到下一行时,您将cur
复制到 prev
中,并将新行读入cur
中。
这样,您始终可以使用上一行。
相关文章:
- 来自 std::list 的迭代器 .end() 按预期返回"0xcdcdcdcdcdcdcdcd"但 .begin()
- 什么时候在C++中返回常量引用是个好主意
- 你能重载对象变量名本身返回的内容吗
- 为什么 Serial.println(<char[]>);返回随机字符?
- C++映射:具有自定义类的运算符[]不起作用(总是返回0)
- 如何在C++中以这种方式返回一行文本?
- 如何在同一行内打印和返回?
- C 数学问题,如果数学全部在同一行上,则双重返回值
- 为什么此代码只能识别文本文件中的第一行?输入任何大于 1 的数字都会返回"Atomic Number Not Found"
- 即使将返回 0 作为 main 的第一行,程序也无法退出C++
- 在文件中返回一行的函数
- 返回到输入文件 的某一行的开头,C++
- 在文本文件C++上返回一行
- 将指针返回到第一行-QFile
- Sqlite3:返回一行的索引,并通过索引找到一行
- 简单的一行类方法返回错误的值
- 在一行中定义具有相同返回类型和参数类型的多个私有函数
- getline返回同一行的倍数
- 返回所有行,或者只返回最后一行
- c++ -CLI Pipeline只返回错误消息的第一行