我想使用fstream在文本文件的特定行中找到特定字符。

例如,我想转到第2行,我这样做:

stream.ignore(20, '\n'); // because i have 20 characters in each line.


它工作正常,但是当我尝试移动此行时:

stream.seekg(1, ios::cur); // move 1 char from the current position.


我测试输出:

char test;
stream >> test;


它在第3行的中间给了我一个角色! (我应该在第2行)

然后我检查了我的当前位置是否正确:

stream.seekg(0, ios::cur);
stream >> char;


没关系,它在第2行的开头为我提供了字符。但是如您所见,当我将0替换为1时,它在第3行的中间给了我一个字符! :/不应该移动1个字符吗?

您知道为什么会这样做吗?

我正在制作基于图块的等距引擎,我需要以文本文件的形式保存和读取数据库。我要保存/读取的地图区域必须在我的视图上,因此我必须从minx字符读取为maxx字符,并将miny(line)字符读取为maxy(line)。

谢谢

最佳答案

此处的链接:http://www.daniweb.com/software-development/cpp/threads/110602/problem-with-seekg指出,必须以二进制方式打开文件,以使seekg能够可靠地使用offset运行。试试看

关于c++ - fstream的奇怪问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20772335/

10-11 22:57
查看更多