c++ - 返回文本文件 C++ 上的一行

标签 c++ file getline

我的程序使用以下命令从文本文件中读取一行:

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()方法。

关于c++ - 返回文本文件 C++ 上的一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27331272/

相关文章:

c++ - 第 0 行第 0 列错误 : bad conversion while loading YAML file

file - 如何使用vcglib保存颜色?

C#:在没有管理权限的情况下从文件中删除只读属性

C++ while(getline()) 不能正常工作

c++ - 在 C++ 中,getline() 不是读取字符串的所有字母,而是一个接一个地接受多个字符串

c++ - 如何在同一个程序中多次启动和关闭 spdlog?

c++ - 为什么 RGB 组件在我添加 +'0' -'0' 之前打印为符号?

c++ - 动态链接库 (C/C++) 中静态变量的行为

c - 如何解决c中的冲突类型错误?

更改指针时 C++ 指针中断