一、第一次写的代码如下:这段是可以正常写入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文件,但是,写入的除了原有的内容,还多了一些乱码,不明白为什么?
请各位高手指点一二,困惑中,不胜感激。