您的位置:首页 > Web前端

菜鸟求助—用fstream写文件时出现的问题

2007-05-10 13:56 399 查看
一、第一次写的代码如下:这段是可以正常写入gle.inf文件的

const string Filename("gle.inf");
 char buffer2[] = "/n*****************that's right?!*****************/n";
 char buffer3[] = "/n*****************that's ok?!*****************/n";
 fstream File2(Filename.c_str(),ios_base::in|ios_base::out|ios_base::app);
 if (!File2.is_open())
 {
  cout<<"can't open the file!"<<endl;
  return false;
 }
 File2.write(buffer2,sizeof(buffer2));
 File2.write(buffer3,strlen(buffer3));
 cout<<buffer2<<endl;
 cout<<buffer3<<endl;
 
 File2.close();

二、后来修改如下:

enum num{good,well,best};

nst string m_FileName ="gle.inf"; 

//原来定义此处fstream m_File;
 string buf1,buf2,buf3;
 num  Withbuf3;
 bool ByHand=true,ByAuto=true;
 buf1 = "ByHand=true/n";
 buf2 = "ByAuto=true/n";
 buf3 = "hi";

 int n;

 cout<<"please input number(0-2):"<<endl;
 cin >>n;

 switch(n) {
 case 0:
  Withbuf3 = good;
  buf3 = "good/n";
  buf1 = "ByHand=false/n";
  break;
 case 1:
  Withbuf3 = well;
  buf3 = "well/n";
  buf1 = "ByHand=false/n";
  break;
 case 2:
  Withbuf3 = best;
  buf3 = "best/n";
  buf1 = "ByHand=false/n";
  buf2 = "ByAuto=false/n";
  break;
 default:
  break;
 }

 fstream m_File(m_FileName.c_str(),ios::in|ios::out|ios::app);   // (此处的m_File前面若是没有fstream则             //编译出 错,开始fstream m_File;语句是定义在程序开始的)
 if (!m_File.is_open())
 {
  cout<<"file can't  open!"<<endl;
  return false;
 }

 m_File.write(buf1.c_str(),sizeof(buf1));
 m_File.write(buf2.c_str(),sizeof(buf2));
 m_File.write(buf3.c_str(),sizeof(buf3));

 cout<<buf1<<endl
     <<buf2<<endl
     <<buf3<<endl;

 m_File.close();

现在有下面的问题:

1.第二次修改的代码的m_File打开文件的时候,若fstream m_File;定义在程序开始,则编译无法通过。后来在m_File打开文件操作的时候才定义,就可以编译通过,为什么?

2.第二次修改后的程序虽然能编译通过,也能写入gle.inf文件,但是,写入的除了原有的内容,还多了一些乱码,不明白为什么?

请各位高手指点一二,困惑中,不胜感激。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  file buffer ios string input
相关文章推荐