我想在已存在的文件末尾接着再写新的内容,用ofstream file("abc.txt", ofstream::app);打开,
然后写入内容:
         file << string1 << endl<< string2 << endl; 
         file.closer();
这样,我的文件格式就是:
string1
string2    可为什么有的时候用这种方法再次打开文件写入新内容时,会将新内容直接写在string2后面,而没有换行写入呢?
错误的格式即为:
string1
string2string3
而我想要的格式应该为:
string1
string2
string3我猜想是用ofstream file("abc.txt", ofstream::app);打开文件时并没有移到文件末尾,而是停留在string2后面。
为什么会这样呢?是不是因为string2末尾的字符让ofstream认为已到文件末尾?怎么样才能解决这个问题呢?谢谢大家!!  

解决方案 »

  1.   

    会这样吗?那为何第一个endl又成功了呢?
      

  2.   

    STL的内部实现哪说的清楚,说不定在最后输出一个endl后直接关闭留,最后的换行被取消了呢?
    我就碰到过MFC中CStdioFile调用WriteString时只加了\r,没有加\n。先测试一下再说吧。
      

  3.   

    ofstream::app 应该是ios::app吧
      

  4.   

    哦?真的可以哩……那这样对所有string就都可以了吧?不会再出现有的行有的不行的情况了吧,大侠?
      

  5.   

    分成两句试试吧。
    file << string1 << endl;
    file << string2 << endl; 
      

  6.   

    分成两句试试吧。
    file << string1 << endl;
    file << string2 << endl;