gpt4 book ai didi

c++ - 为什么 seekg 功能不起作用?

转载 作者:太空宇宙 更新时间:2023-11-04 16:23:16 24 4
gpt4 key购买 nike

代码如下:

#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int main(int argc, char *argv[])
{
string infile(argv[1]);
ifstream fin(infile.data());

string var_name;
char ch = fin.get();
cout << ch << endl;

ch = fin.get();
cout << ch << endl;

ch = fin.get();
cout << ch << endl;

cout << "pos: " << fin.tellg() << endl;
fin.seekg(-sizeof(char),ios::cur);
cout << "pos: " << fin.tellg() << endl;

ch = fin.get();
cout << ch << endl;

return 0;
}

文件内容只是一个字符串:

<
?
x
m

输出是:

<\n
?\n
x\n
pos: 3\n
pos: 2
x

为什么最后打印的字符还是'x'??为什么 seekg 函数不将文件指针向后移动一个字节?

最佳答案

文件指针的位置是 3 after 读取 x,但 x 本身位于位置 2(因为第一个字符位于位置 0)。向后移动 1 个字符会将文件指针置于它最近读取的字符处,这正是此处发生的情况。

如果你想移动到最后一个字符之前的那个字符,你需要用-2而不是-1来寻找。

关于c++ - 为什么 seekg 功能不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14752776/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com