问题标签 [seekg]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
66 浏览

c++ - 使用 fstream 读取和写入文件

我尝试解决一个练习:编程:使用 C++ 的原则和实践 Bjarne Stroustrup

  1. 编写一个程序,从文件中删除所有元音(“disemvowels”)。例如,从前!变成 nc pn tm!。令人惊讶的是,结果仍然是可读的。在你的朋友身上试试。

文本文件包含:“从前”

当我在开关盒内尝试此代码时:

我得到无限循环,用这些字符“nc”覆盖所有文件

它只对我有用:

fs << ' '; 如果位置已经增加,为什么还要设置位置?

0 投票
0 回答
15 浏览

c++ - 多个输入流与一个使用 seekg 的输入流

我有一个大(文本)文件,分为 d 个“块”。用户可以从这些块中的任何一个中读取下一行 - 未指定顺序。该文件在此过程中未更改。

有两个明显的解决方案:维护 d 个输入流(每个块一个)或保持当前流位置并通过 seekg 方法使用单个流从块跳转到块。

是否有任何理由假设任何一种方法(就效率而言)都比另一种方法(好得多)?

0 投票
0 回答
26 浏览

c++ - 在 C++ 中放置指针和获取指针

在以下代码中:

文件“test1.txt”的内容是 Hello Hi Girik Garg。这个程序的输出是:

我对put指针的位置有疑问,因为我没有使用seekp,所以seekp的位置不应该是0而不是2吗?

请用适当的理由解释。

0 投票
1 回答
46 浏览

c++ - seekg 读到文件末尾

我试图在 ifstream 上使用下面的代码两次 - 在我从文件中读取任何内容之前,以及在我读到它的末尾之后(使用readline())。

m_startPosition 是文件中间的一些位置。对于这个问题并不重要。)

在第一次运行时,代码按预期工作。然后当我第二次运行它时,变量的值test1是-1,即使在使用clear().

我查看了类似的问题,并且所有解决方案都说使用功能clear()(我已经这样做了)。

0 投票
1 回答
60 浏览

c++ - seekg() 似乎跳过了超出预期位置的字符 C++

我一直在解析文件和使用 seekg() 时遇到问题。每当在文件中达到某个字符时,我想循环直到满足条件。循环在第一次迭代时工作正常,但是当它循环返回时,文件似乎跳过了一个字符并导致循环无法按预期运行。

具体来说,如果循环全部包含在文件的一行中,则循环可以正常工作,但当文件中的循环中至少有一个换行符时,循环会失败。

我应该提到我正在 Windows 上处理这个问题,我觉得问题出在 Windows 如何以\r\n.

使用seekg(-2, std::ios::cur)after looping 解决了当开始循环条件后紧跟换行符时的问题,但不适用于同一行中包含的循环。

代码的结构是让解释器类保存文件指针和相关变量,例如当前行和列。此类还具有如下定义的功能映射:

它遍历每个字符,在以下函数中确定它是否具有功能:

循环的开始(由 '[' 字符表示)将开始循环位置设置为this->temp_pos

当到达循环结束时(由 ']' 字符表示),如果不满足结束循环的条件,则将文件光标位置设置回循环的开头:

我能够输入调试信息,并且可以显示堆栈跟踪以进一步明确问题。

单行循环的堆栈跟踪 ( ++[->+<]):

这按预期工作。

多行循环:

堆栈跟踪:

由于永远不会满足结束条件,因此永远循环(即第一个单元格的值永远不会为 0,因为它永远不会递减)。

奇怪的是,以下工作:

它遵循与第一个示例相同的堆栈跟踪。这个工作和最后一个例子不工作是什么让我很难解决这个问题。

如果需要有关程序应该如何工作或其输出的更多信息,请告诉我。抱歉,这篇文章太长了,我只想尽可能清楚。

编辑 1:该类的文件对象为std::ifstream file;. 在构造函数中,它以 开头 this->file.open(filename),其中filename作为参数传入。

0 投票
1 回答
15 浏览

c++ - 从 istringstream 末尾查找失败

这是一个极简代码:

我明白001最后一次seekg失败的意思。
我对 linux/g++ 和 win/MSVC 也是如此。
我在 C++/stl 文档中找不到这样的限制……
知道吗?
谢谢