问题标签 [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.
c++ - 使用 fstream 读取和写入文件
我尝试解决一个练习:编程:使用 C++ 的原则和实践 Bjarne Stroustrup
- 编写一个程序,从文件中删除所有元音(“disemvowels”)。例如,从前!变成 nc pn tm!。令人惊讶的是,结果仍然是可读的。在你的朋友身上试试。
文本文件包含:“从前”
当我在开关盒内尝试此代码时:
我得到无限循环,用这些字符“nc”覆盖所有文件
它只对我有用:
fs << ' ';
如果位置已经增加,为什么还要设置位置?
c++ - 多个输入流与一个使用 seekg 的输入流
我有一个大(文本)文件,分为 d 个“块”。用户可以从这些块中的任何一个中读取下一行 - 未指定顺序。该文件在此过程中未更改。
有两个明显的解决方案:维护 d 个输入流(每个块一个)或保持当前流位置并通过 seekg 方法使用单个流从块跳转到块。
是否有任何理由假设任何一种方法(就效率而言)都比另一种方法(好得多)?
c++ - 在 C++ 中放置指针和获取指针
在以下代码中:
文件“test1.txt”的内容是 Hello Hi Girik Garg。这个程序的输出是:
我对put指针的位置有疑问,因为我没有使用seekp,所以seekp的位置不应该是0而不是2吗?
请用适当的理由解释。
c++ - seekg 读到文件末尾
我试图在 ifstream 上使用下面的代码两次 - 在我从文件中读取任何内容之前,以及在我读到它的末尾之后(使用readline()
)。
(m_startPosition
是文件中间的一些位置。对于这个问题并不重要。)
在第一次运行时,代码按预期工作。然后当我第二次运行它时,变量的值test1
是-1,即使在使用clear()
.
我查看了类似的问题,并且所有解决方案都说使用功能clear()
(我已经这样做了)。
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
作为参数传入。
c++ - 从 istringstream 末尾查找失败
这是一个极简代码:
我明白001
最后一次seekg
失败的意思。
我对 linux/g++ 和 win/MSVC 也是如此。
我在 C++/stl 文档中找不到这样的限制……
知道吗?
谢谢