菜鸟求助—用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文件,但是,写入的除了原有的内容,还多了一些乱码,不明白为什么?
请各位高手指点一二,困惑中,不胜感激。
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文件,但是,写入的除了原有的内容,还多了一些乱码,不明白为什么?
请各位高手指点一二,困惑中,不胜感激。
相关文章推荐
- Python问题:求助,在使用seek函数时,发现文件若有汉字,出现错误
- linux 链接库文件出现“undefined reference to" 问题的解决方法
- 解决ThinkPHP上传文件时出现文件名已存在的问题
- IO 流读取文件时候出现乱码 文件编码格式问题 怎么转换解决方法
- Android Studio解决未识别Java文件(出现红J)问题
- selenium+python 自动化测试,下载文件过程中出现对话框问题的处理
- linux&windows双系统:linux访问windows文件,出现ntfs问题
- Application Loader提交ipa文件出现ERROR ITMS-90022问题解决方式
- fopen()函数以"a+"方式打开一个不存在的文件后读写出现问题
- CentOs+ngnix访问PHP文件时常出现的问题
- hbm文件如何打包在jar中不出现资源文件找不到的问题
- 在项目中导入环信EaseUI出现.os文件找不到的问题
- uploadify 上传大文件 出现的 HTTP error 问题的方法
- 关于Spring boot中读取属性配置文件出现中文乱码的问题的解决
- 我用python将结果写入txt文件出现的编码问题及其解决方法
- 如何应对SparkSQL DataFrame保存到hdfs时出现的过多小文件问题
- 转:C#编程读取Excel文件,引用Microsoft.Office.Interop.Excel出现的问题
- 文件数据的格式问题hive解析出现错误
- ubuntu eclipse 解决android新建项目出现appcompat_v7报错和R文件无法生成的问题(windows同)
- 读取文件,取出第一行出现\ufeff问题(编码问题)