我想使用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/