主题:[讨论]问一个文件读写的问题
我用CStdioFile读txt文件时候遇到一个问题。
平常的文件是用'\r''\n'来换行的,但这个txt文件就单用'\n'来换行。文件非unicode.
当我读到某个地方,就用DWORD pos = GetPostition来记录下当前的位置。之后用Seek(pos, CFile::begin)来恢复。却发觉两次的位置不一样了。
CStdioFile里面包含一个FILE指针,GetPostition, Seek里面调用了fseek, ftell。我跟了一下,发觉fseek里面有个循环,for(p = strem->_base; p < strem->_ptr; p++),遇到*p == '\n'就将offset值增加。它这里增加认为'\n'和'\r'一定是一起的,调整了一下offset值。但这个调整在单用'\n'来断行的情况下就错了。
不知道大家有没有遇到过相应的问题。
请问这种情况下,怎么才能保存,恢复准确的读写位置。
注: (我知道CFile类是可以的,但里面没有读一行的函数。)
编码环境是VC2003
平常的文件是用'\r''\n'来换行的,但这个txt文件就单用'\n'来换行。文件非unicode.
当我读到某个地方,就用DWORD pos = GetPostition来记录下当前的位置。之后用Seek(pos, CFile::begin)来恢复。却发觉两次的位置不一样了。
CStdioFile里面包含一个FILE指针,GetPostition, Seek里面调用了fseek, ftell。我跟了一下,发觉fseek里面有个循环,for(p = strem->_base; p < strem->_ptr; p++),遇到*p == '\n'就将offset值增加。它这里增加认为'\n'和'\r'一定是一起的,调整了一下offset值。但这个调整在单用'\n'来断行的情况下就错了。
不知道大家有没有遇到过相应的问题。
请问这种情况下,怎么才能保存,恢复准确的读写位置。
注: (我知道CFile类是可以的,但里面没有读一行的函数。)
编码环境是VC2003