我希望您能够提供一种方法,将我的get指针设置在fstream结尾的第x个位置。
我尝试过:
我尝试过:
file.seekg(-x, ios_base::end);
但是根据这个问题,这一行是未定义的行为。
- 我如何以任何方式寻求从fstream的末尾定位x?
如果您想将指针设置在距离末尾 x 的位置,您需要知道末尾在哪里,因此您需要从以下位置开始:
file.seekg(0, ios_base::end);
int length = file.tellg();
当您知道文件长度时,可以设置指针:
file.seekg(length - x, ios_base::beg);
Hello\r\n
World\r\n
file.seekg(-1, ios_base::end);
,结果是不确定的,因为不清楚结果应该是什么:
'\n'
吗?但是,在这种情况下,以相反顺序读取文件将与以正确顺序读取文件不一致。'\r'
,因为'\r''\n'
应被视为单个字节吗?但是,在这种情况下,必须逐字节进行定位,并且对于每个字节,库都必须检查前一个字节,以防万一。tellg()
获取的位置来执行seekg()
的原因。ios::binary
,因为这样可以确保无论从末尾还是从开头计数,每个字节始终是一个字节。