问题标签 [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 投票
1 回答
594 浏览

include - “未找到搜索标识符”

我有一个名为 main 的程序:

然后是其他.h:

我得到了错误:

'seekg': 未找到标识符

为什么我会收到此错误,我该如何解决?

0 投票
2 回答
2376 浏览

c++ - 文件内容更改后使用 ifstream 从同一文件读取(直到 EOF)

要求 :


我必须从特定文件读取直到 EOF(一次 16 个字节),然后说睡眠 5 秒。现在,在 5 秒后,当我尝试从文件中读取(其内容到那时将被附加)时,预期的设计必须以这样一种方式从它之前离开的点读取并再次扫描内容(每次 16 个字节)直到到达 EOF。

我已经使用 ifstream 编写了(基本)代码以从给定文件中读取(直到 EOF - 一次 16 个字节),如下所示:

我需要修改它以满足我的要求。我尝试使用 seekg() 调用,但不知何故失败了。我想知道,当我第一次访问文件并将其读取到文件流时,程序是否会以某种方式在文件上放置一个排他锁,这意味着我下次将无法读取它.

谁能告诉我怎么做?

文件名:“from4to5” 内容:

BD8d3700indiaC#EBD6d4700godgeD3EBD9d1311badge3TE

在 5 秒内,其他一些进程写入(追加)到同一个文件“from4to5” 现在,

文件内容:

BD8d3700indiaC#EBD6d4700godgeD3EBD9d1311badge3TEBD6d1210clerk41EBD2d1100mayor47EBD4d2810bread6YE

现在,当程序从“from4to5”文件中读取时,它必须从之前离开的位置开始读取,每次读取 16 个字节,直到遇到 EOF。

这次的输出意图是:

0 投票
2 回答
694 浏览

c++ - 在 ifstreams 中使用 seekg 保持有效位置

我正在尝试使我的文件解析更加健壮。使用 ifstream,我如何确保seekg将我保持在文件中的有效位置?

这不起作用:

我假设当前迭代器已经被推到结束迭代器之外,所以 peek() 永远不会是真的。

0 投票
1 回答
2307 浏览

c++ - seekg() 神秘地失败

我有一个 2884765579 字节的文件。使用此函数进行双重检查,返回该数字:

然后我做:

这将设置故障位。errno没有改变。我可以采取哪些步骤来解决此问题?


绝对确信

  • 文件大小真的是2884765579
  • pos真的是2884765579
  • 在 .seekg() 之前未设置故障位
  • 故障位在 .seekg() 之后立即设置,并且在两者之间没有进行其他调用
  • 使用二进制标志打开文件

编辑:万一有人遇到同样的问题..使用我写的这段代码(仅适用于Windows),让你头疼得多:

0 投票
1 回答
2491 浏览

c++ - 如何为自定义 istream/streambuf 实现 seekg()?

十年前我曾经是一名 C++ 专家,但在过去的 10 年里,我一直在编写 Java。我刚刚开始了一个使用小型第三方 XML 解析器的 C++ 项目。XML 解析器接受 STL istream。我的 XML 数据来自 Windows COM IStream。我想我会做正确的事并创建一个适配器来获取 IStream 数据并通过 istream 将其呈现给 XML 解析器。

我按照http://www.mr-edd.co.uk/blog/beginners_guide_streambuf上的优秀教程创建了一个 COMStreambuf,它从底层 COM IStream 获取数据,并将其用作自定义 COMIstream 的缓冲区。一切看起来都不错,但我从解析器中得到一个读取错误。

结果解析器通过在 istream 上使用 seekg() 将整个文件读入内存以找出它的大小,然后使用 seekg() 回到开头一次性读取它。不出所料,前面提到的教程决定“为另一个帖子保存[实现搜索的说明]”,这显然从未写过。

有人能告诉我用我的自定义 istream/streambuf 实现 seekg() 需要做什么吗?我自己会冒险去做(我的第一个倾向是覆盖 istream 中的东西),但是由于我对 STL 的经验不够深入,加上我的 Java 心态,我担心我会做一些不完整的事情并且有一个脆弱的解决方案。(例如,如果不阅读教程,我永远不会猜到有人会通过编写新的 streambuf 来制作自定义 istream,或者我需要使用默认语言环境调用 imbue() 等)

谢谢你的帮助。这个网站给我留下了深刻的印象——参与者的知识和他们友好、诚实的天性承认谁有最好的答案。:)

0 投票
1 回答
425 浏览

c++ - 你可以在哪些类型的输入流上调用 seekg?

我有一个函数(旧版),它读取文件的前几行以确定其类型,然后关闭并重新打开文件,以便它可以使用正确的解释器重新读取整个文件。要点是:

我需要一个可以在已经打开的流上工作的类似功能。我创建了一个新函数,它采用 aostream &而不是char *filename- 基本上是这样的:

istream当实际是 astringstream或 an时,它似乎有效,fstream但我想知道我是否只是走运。我还对seekg-ing做了一个小测试std::cin,它奏效了,这让我感到惊讶。

所以我的问题是:你可以使用什么样的流seekg?什么时候会失败?规范参考会很棒——我浏览了一遍,上面的东西根本seekg没有pubseekpos帮助。seekposseekoff

我想用新的(如下)重新实现原始功能,但我只是不知道这是否安全。

0 投票
1 回答
213 浏览

seekg - 在 while(file.good()) {....} 之后 seekg 不起作用

我很不安以下似乎不起作用。

我已经尝试过 myfile.close 等,甚至创建了一个新ifstream myfile2;的来重新加载文件。没有任何效果。就好像这个 seekg 的东西是通用的什么的,并且每个程序只工作一次。

0 投票
1 回答
350 浏览

c++ - 来自用户使用 seekg 选择的像素的 C++ RGB 值

我需要创建一个加载 .raw 图像(通用 100x100 图像)的程序,要求用户选择范围内的 (x, y) 坐标,并使用 seekg 显示所述像素的红色、绿色和蓝色值功能。我不知道如何从像素中获取 rgb 值。到目前为止,我已经阅读了教科书的每一章,并且没有关于检索 rgb 值的内容。

如果超出范围,则询问坐标并给出错误消息的代码工作正常。只有当我尝试提出使用 seekg/获取 rgb 值的代码时,我才会遇到麻烦。我查看了网站上的不同问题,这里有很好的信息,但我没有看到任何使用 seekg 来获取 rgb 值的答案。

我不是在寻找任何人为我生成代码,只是在寻找一些指导和朝着正确的方向前进。

然后我不知所措。

任何帮助将不胜感激。

0 投票
1 回答
1587 浏览

c++ - C ++如何检查流(iostream)是否可搜索

有没有办法检查 ostream 的 istream 是否可搜索?

我怀疑进行测试搜索并检查故障位是不正确的,因为搜索可能由于不相关的原因而失败。

我需要它才能在 Linux 和 mac 上工作,如果这有所作为的话。

0 投票
1 回答
630 浏览

c++ - seekg 和 tellg 不兼容

我正在编写一个 C++ 控制台应用程序。在使用 size(int) rowSize 和 columnSize 创建一个矩阵后,我想将文本文件中的字母写入矩阵,但是由于读取器的位置是-1,所以 while 循环永远不会运行,而且我无法将其设为 0。有什么想法吗?