visual studio 2008: fstream bug?

来源:互联网 发布:mac怎么设置自动关机 编辑:程序博客网 时间:2024/05/21 02:48
The following C++ source code always successfully write in GCC3.4.4, and VC++ 6.0,
but failed in VS2008. The file 0000.txt is already in thedisk.

(1) OUTPUT in GCC 3.4.4 and VC 6.0:
     READ=0 WRITE=0
     READ=41  WRITE=41
     READ=27  WRITE=27
     READ=91  WRITE=91  
    
(2) Output in VS2008:
     READ=0  WRITE=0
    READ=45  WRITE=45
    READ=29  WRITE=29
    READ=-1  WRITE=-1

Looks like VS2008 always failed to write information to fileafter calling
   myFile<<"^^^^^^^^^^^^^^^^^^^------------------------------------^^^^^^^^"; 

What a shit!

=========================================================================================
#include
#include
using namespace std;


#define DBG()   cout<<"READ="<<myFile.tellg()<<" WRITE="<<myFile.tellp()<<endl; 

int main() 
fstream myFile( "E:\\0000.txt"); // default mode for fstreamis ios::in | ios::out 
myFile.seekp(0,ios::beg); // put pointer
DBG();         
myFile<<"Hel--\nWorld\n============SEU\nWelcome!\n!!!!"; 
DBG();
myFile.seekg(0,ios::beg); // if no this,myFile>>s will fail, andbreak! 
 
 chars[100],s1[100],s2[100]; 
myFile>>s>>s1>>s2; 
DBG();
// 这时 DBG()宏打印出来的读写位置都是29,文件长度是45,理论上应该可以写
// 而下面的seekp()移动到的位置就是当前位置,我发现如果没有这句话,VS2008就是写不进去!
 
//myFile.seekp(29,ios::beg); 
myFile<<"^^^^^^^^^^^^^^^^^^^------------------------------------^^^^^^^^"; 
DBG();
myFile.close(); 
return 0; 
0 0
原创粉丝点击