从位置读取文件(到位置)



文件流/ifstreamreadbufferandseekpileposition.htm">http://www.java2s.com/Tutorial/Cpp/0240_File-Stream/ifstreamreadbufferandseekfileposition.htm

该页面可以使用打印两次文件内容

file.seekg(0);

因此,我假设seekg(0(将"游标"(在java中(放在文件的开头,并且这个网站:http://www.cplusplus.com/doc/tutorial/files/确认我。

但当我对包含(0\n0\n0\n(的文件执行此操作时:

while(getline(file,line)) {
    CCLOG(line.c_str());
    CCLOG("%d",(int)file.tellg());
}
file.seekg(0);
CCLOG("%d",(int)file.tellg());
while(getline(file,line)) {
    CCLOG(line.c_str());
}

(顺便说一句,我在cocos2dx 2.2.2中这样做(

它打印:

0
2
0
4
0
6
-1

我不知道我做错了什么。请帮助

我不能100%确定你在这里问什么(以及它与Java有什么关系(,但如果你问为什么将文件光标重置到文件的开头不起作用,那么我的答案是:

在调用seekg之前,请确保重置了文件的错误标志。所以不仅仅是

file.seekg(0);

写入

file.clear();
file.seekg(0);

这将成功地将文件光标重置到文件的开头。原因是,一旦到达文件末尾,EOF(文件末尾(标志将被设置,seekg不会将其重置。

您看到的行为的原因是,一旦读取到文件的末尾,就会设置eof((状态标志。在此之后,任何读取或定位文件的尝试都将触发错误。导致error返回代码的错误,返回代码为-1。

您可以使用clear((重置状态标志(所有状态标志(。所以代码应该是

file.clear();
file.seekg(0);

相关内容

  • 没有找到相关文章

最新更新