一个程序输出一个文件,另一个程序打开这个文件,读入内容。读入过程中,需要记录读取位置,使用tellg()获取读取位置, 以便后面用seekg重新定位读取。
使用过程中发现,tellg()返回的位置,有时有效,有时无效,第一次是返回0,后面文件有输入后,再次读取前,调用tellg(),有时返回-469,有时返回正的位置。
经过多次摸索,结合网上搜索,发现windows下,ifstream只有用二进制模式打开文件,tellg才能返回正确的位置。
ifs->open(filePath, std::ios::binary);
其实tellg只能二进制模式下用,也不是不行,但在文本模式有时行,有时不行,太恶心了。