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

c++ - seekg() 没有按预期工作

我有一个小程序,用于从文件中复制一个小短语,但似乎我对seekg()的工作方式有误解,或者我的代码中存在问题,导致该函数无法按预期工作。

文本文件包含:

//介绍

以前注意=假

该代码旨在将单词“false”复制到字符串中

但无论出于何种原因,程序输出:

=假

我期望发生的事情:

我相信我将 get 指针放在文件的第 24 个索引处,这是短语“false”开始的地方。然后程序将从该索引开始输入,直到遇到空格字符,或者遇到文件末尾。

实际发生了什么:

无论出于何种原因,get 指针在预期之前启动了一个索引。我不确定为什么。非常感谢您解释出了什么问题/我做错了什么。

另外,我确实知道我可以简单地从我希望的位置开始将previousNotedStr设为 statsStr的子字符串,并且我已经成功地尝试过。我真的只是在这里做实验。

0 投票
1 回答
111 浏览

c++ - 用二进制文件填充结构

我正在尝试反向读取二进制文件(“example.dat”)并使用其内容填充记录结构。该文件包含 10 条记录,每条记录有 3 种数据类型。

/* 任何帮助和反馈表示赞赏。*/

0 投票
1 回答
273 浏览

c++ - 在使用 seekg 时需要帮助

我需要编写一个程序来读取文件中的某些字符。例如:所有字符从头到尾或倒序排列。如何显示所有字符而不是一个字符?

0 投票
1 回答
751 浏览

c++ - seekg,大文件失败

我有一个非常大的(950GB)二进制文件,其中存储了 10 亿个浮点序列。

我拥有的长度为 3 的文件类型的一个小例子可能是:

现在,我想读取一个特定的序列(假设 index=2 的序列,因此是我文件中的第三个序列),所以我使用以下代码:

问题是,当我使用 seekg 时,某些索引的读取失败并且我得到错误的结果。如果我按顺序读取文件(不使用 seekg)并打印出想要的序列,我总是会得到正确的结果。

一开始我想到了 seekg 中的溢出(因为字节数可能非常大),但我看到 seekg 输入一个巨大的流类型(数十亿)。

0 投票
1 回答
2372 浏览

c++ - 在处理二进制文件时理解 Seekg() 和 seekp()

我是一名 CS 学生,我试图理解一段代码,但我无法理解它。这段代码允许用户修改二进制文件中的某个记录(结构)。我不明白records.seekg(recNum * sizeof(person), ios::beg); and records.seekp(recNum * sizeof(person), ios::beg);。为什么rec num使用的是结构体大小的指针。任何帮助是极大的赞赏。

0 投票
1 回答
28416 浏览

c++ - 如何检查ifstream是否是C ++中的文件结尾

我需要顺序读取一个大文件(大约 10GB)的所有块,该文件包含许多带有一些字符串的浮点数,如下所示(每个项目由 '\n' 分割): 6.292611 -1.078219E-266 -2.305673E+065 sod;eiwo 4.899747e-237 1.673940e+089 -4.515213

MAX_NUM_PER_FILE我每次都读取项目并处理它们并写入另一个文件,但我不知道何时ifstream结束。这是我的代码:

我的代码出错了,length大于实际文件大小。我试过file_input.good()or !file_input.eof(),他们没有工作,很好,但它比我想要getline(file_input,s)的要慢得多,但我不知道如何检查是否是文件结尾。readreadifstream

我在 WINDOWS 7 中使用 VS2010 完成我的工作。

我已经搜索过,但没有任何答案,如何使用 ifstream 打开文件并继续阅读,直到最后这个链接无法回答我的问题。


更新,问题解决

大家好,我发现这是我的错。两者都while(file_input.tellg()<length)工作while(file_input.peek()!=EOF)正常!while(file_input.peek()!=EOF)被推荐。

文件结尾后写入的额外项是buffer上次写入的剩余项。

这是正确的代码:

0 投票
1 回答
371 浏览

c++ - C++: file.seekg() does not appear to return current location

I am trying to backup a line in an ifstream. file.tellg() is returning a value I was not expecting. In the example bellow, after reading the first line (a string length of 15 characters) I expected file.tellg() to return 16. Instead, it is returning 41. Could someone please provide some insights on this behavior?

test.cpp

Output:

sample.ics

0 投票
1 回答
552 浏览

c++ - 在二进制文件中的位置读取和输出字节(C++)

我想从二进制(.bin)文件中读取一组 256 个字节并将其存储到缓冲区中。然后我想将这些字节中的每一个移动到一个 char 向量的向量中。另外,我想读取向量中的 char 值并获取该字节二进制值的相应整数值。这就是我的处理方式:

但是当我打印出这些值时,我得到的结果如下:

这显然是错误的输出。有人可以解释一下我做错了什么以及如何完成这件事吗?

0 投票
1 回答
169 浏览

c++ - (C++) Seekg in fstream cutting off characters

So I'm not entirely sure why this is happening. I've tried just adding in spaces before the words in the txt file that I'm reading from and it fixes it for some, but not all. Basically I'm just trying to return a name, and each name in the file is on a different line. But when i print the names, some of them are cut off, like "Dillon" would be "llon" or "Stephanie" will be "phanie" and so on. Here's the use of seekg:

So, I would post the txt file, but its just a list of names, one per line, 100 of them. I've tried looking up examples of the use of seekg, but I cant seem to figure out why it cuts off some. Also, it only cuts off sometimes. One output it'll print out "Dillon" right, next it would print "llon".

Any help would be appreciated

0 投票
0 回答
229 浏览

c++ - seekg() 函数在下一个 >> 操作中导致错误

你好亲爱的乐于助人的人

seekg()我在使用类的功能时遇到了问题ifstream。我的目标是从具有已知布局的文本文件中读出一个整数。将以下内容视为名为 Ph_Sn.cfg 的示例文件。

在实际程序中,我打开文件并执行多个任务,这些任务需要我在读出位置上跳跃一下。我已经跟踪了我的问题并创建了一个最小的工作示例,即下面的代码。
简而言之:通过调用函数来移动流游标会以seekg()某种方式破坏流对象并使下一个 >> 运算符设置失败位。

编译代码并在我的 Ph_Sn.cfg 所在的目录中运行 .exe 文件会在控制台上显示以下输出:

如代码注释中所述,只需注释掉 file.seekg(correctPosition);操作即可在第二次读取时给出正确的整数。

我试图找到类似问题的答案,但在大多数情况下,设置了 eof 标志并且通过调用file.clear(). 可悲的是,这似乎对我没有帮助。我也找到了这篇文章,但我认为我的问题有所不同,因为(我错了吗?):

  1. Failbit 不是seekg()在 >> 操作符之后而是之后设置的
  2. 我的文件很小(一些 kb)
  3. 我正在以文本模式打开文件

我想知道问题是否不在于代码,而在于我的 Eclipse 设置。如果代码有效,如果独立编译,如果是这样,什么样的设置可能导致这种(在我看来)奇怪的行为,我想有一个确认。我正在运行 32 位 Windows 操作系统、带有 cdt 插件的 eclipse-Luna 和 MinGW GCC 工具链。

我感谢任何形式的帮助或提示。到现在为止,这个问题已经占据了我整整一周的时间。