问题标签 [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 回答
113 浏览

c++ - 在 ifs() C++ 中快速访问文件位置

信息:将位置存储在 txt 文件中,关闭文件,然后使用 c++ 在同一位置打开它的最佳方法是什么?

我有一个大文本文件,需要分块解析并输入到某个系统中。到目前为止,我在 ifstream 中加载文件,然后在 getlines 中加载,直到找到我需要的数据(假设数据位于 {x} 位置)。在此之后我关闭文件,处理数据,现在我需要继续从大文件中提供数据。所以我再次打开文件,并获取行,直到这次我到达位置 {x+d} ( d 是我读取的数据的偏移量)......

很容易看出,我不是通过文件一次,而是通过文件 (1d + 2d + ... + (N-1)d + Nd) ~ d*N^2 次。现在我想在d之后保存文件中的位置,关闭文件,然后在同一位置立即打开文件。可以为此使用什么?

0 投票
0 回答
67 浏览

c++ - 使用 seekg、tellg 函数更改文件内数据的顺序

我是 C++ 编程的新手。我有一个小练习,可以使用以下内容:使用 windows 套接字编程,使用窗口 api 函数(CreateFile、ReadFile 和 WriteFile),以及使用 seekg、seekp、tellg 和 tellp 函数。

这是我的代码中发生的事情,

  1. 打开一个.txt包含 URL 的文件(reddit.com、stackoverflow.com、google.com),然后读取 URL 并将strVal.

  2. strVal然后我使用分隔符拆分数据的值,","然后循环开始。

  3. 然后开始windows socket编程。

  4. 在循环内部,它将获取每个 URL 的 HTTP 请求并询问请求类型(POSTGET)。

  5. 一旦收到请求的答复,数据将在 Buffer 中。

  6. 然后我将打开一个.txt文件来放置收到的 3 个域的请求。

这里的例子 是 output.txt 的结果

结果很好,程序正在处理这部分,但对于程序的最后一个要求,他们希望我.txt使用 seekg、seekp、tellg 和 tellp 更改文件内已回答数据的顺序。

我试图实现这些功能,这是我的代码。

我刚刚打开.txt插入数据的文件,然后使用 seekg 读取数据,然后将其放入缓冲区然后输出。没有意义,因为如果.txt文件中插入了另一个域怎么办。

现在,我关心的是这部分。根据我的代码,如何使用 seekg、seekp、tellg 和 tellp 更改 txt 文件中数据的顺序?

这是我的整体代码,

0 投票
1 回答
158 浏览

c++ - 无法理解如何使用 seekg tellg 来实现以下结果

作为更大程序的一部分,我的任务是读取输入文件的每一行并将索引偏移存储到每一行。稍后给出所有索引偏移量,我希望能够直接转到文件中的那个位置并打印与该偏移量对应的行。有人可以帮助我弄清楚我在以下代码中做错了什么。

输入文本文件中的数据包含以下条目:

9 10 11

8 7 5

67 34 12 45 9

20

代码的理想输出应该与输入模数相同,直到打印行的顺序(我使用的是无序映射,因此输出不需要以与输入相同的顺序打印)。但是我的代码输出了一些垃圾,主要是 \x00 形式的字符。有人可以帮我弄清楚我的代码有什么问题吗?

0 投票
0 回答
87 浏览

c++ - 为什么当我以 ifstream 方式打开 linux 系统文件时无法使用 seekg(0, ifstream::end)

我想使用 C++ 来获取机器的 CPU 信息,我的代码是:

但我得到了输出:

之后我将 /proc/cpuinfo 复制到我的项目路径,并修改代码:

我得到了正确的输出:

我花了一整天的时间试图找出原因,但是如果我打开任何文件/proc并使用file.seekg(n, ifstream::end),则返回的file.tellg()将始终为-1,并且我无法再移动streampos。

那么为什么我无法将 /proc 下的文件作为我的项目目录下的文件读取呢?

0 投票
1 回答
74 浏览

c++ - 为什么函数tellg() 没有返回好的结果?

我不明白为什么我的函数tellg()从 0 跳到 2 这是我的代码:

我的文件包含这一行:

这些是我期望的结果:

但我明白了:

0 投票
0 回答
34 浏览

c++ - 如何在 getline() 之后使用 file.get(char)?

这是我的代码,我不明白为什么get(char)给我错误的结果!

我预计输出将是:

d

(因为第一个getline存储"0 TS1"in line,然后第二个getline存储"paris"in line,然后我们将指针向前移动 3 个字符,使其位于 the"n""d"of之间london)。

但我实际上有:

顺便说一句,这是我的文件:

我在 Windows 10 上使用代码块,并在 Windows 上使用记事本创建了我的文件。

0 投票
2 回答
223 浏览

c++ - 在n个流中拆分ifstream?

我有一个 ifstream 的问题。我想将 ifstream 分成 n 部分。

例如 n = 3:

  1. Ifstream 包含文件的前 1/3。
  2. Ifstream 包含文件的第二个 1/3。
  3. Ifstream 包含文件的第三个 1/3。
0 投票
0 回答
223 浏览

c++ - 写入二进制文件并从二进制文件中读取一条记录(一个对象)后,该记录的枚举类型最后一个属性为NULL(默认值)

我正在尝试编写从文本文件读取的 C++ 代码,将所有内容写入二进制文件,并从二进制文件中读取记录。为了保存记录,我创建了一个 Student 类,其属性之一是枚举类型。我成功地从文本文件中读取,我成功地写入学生记录(我在调试时检查它),但是我从二进制文件中读取第 N 条记录时遇到问题。虽然所有属性都成功获取,但最后一个属性是枚举类型没有更改,即使对于所有记录也似乎是默认值。尽管 VS 2017 中不存在错误,但通过调试我认识到问题出在binaryReadreadRecord部分(“this”中的数据显示枚举属性为 NONE。还有sizeOfOneStudentRecordseekgreadreadRecordbinaryRead等可能不正确。我需要帮助的朋友。代码如下。我会感谢你的帮助。

0 投票
1 回答
238 浏览

c++ - 为什么一个空行占用两个字节?

我是 C++ 新手。我想计算文本文件末尾的空白行。但现在我遇到了一个问题。文本文件的内容如下:

测试.txt

代码是:

结果是:

在上面显示的结果中, 的值b也是\n。为什么?

0 投票
1 回答
139 浏览

c++ - 在 C++ 中使用 seekg() 读取文件的问题

我正在学习用 C++ 读写文件并发现问题。

我的 test.txt 文件在 3 行中包含 3 个字符串:

我的问题是:我不明白为什么我需要使用f.seekg(2, ios::cur); 而不是f.seekg(1, ios::cur); 我知道如何seekg()在 c++ 中使用,我认为我只需要忽略 1 个字节即可通过getline()函数获取下一行。

这是我的代码: