C++文件写入问题,此代码为什么写入文件会是乱码
#includefstream#includeiostreamusingnamespacestd;intmain(){inta[13],p1,p2,sum=0;p1=p2...
#include fstream
#include iostream
using namespace std;
int main( )
{
int a[13],p1,p2,sum=0; p1=p2=&a[0]; for(int i=0;i<10;i++)
{a[i]=60+rand()/100;<br> sum+=a[i];<br> (a[i]>*p1)?p1=&a[i]:p1=p1;<br> (a[i]<*p2)?p2=&a[i]:p2=p2;} a[10]=*p1;
a[11]=*p2;
a[12]=sum/10; ofstream ofile("w1.txt",ios::out); if(ofile==0)return 0; for(i=0;i<13;i++)
{
ofile<<a[i]<<" ";
} ofile.close();
return 0;
} 展开
#include iostream
using namespace std;
int main( )
{
int a[13],p1,p2,sum=0; p1=p2=&a[0]; for(int i=0;i<10;i++)
{a[i]=60+rand()/100;<br> sum+=a[i];<br> (a[i]>*p1)?p1=&a[i]:p1=p1;<br> (a[i]<*p2)?p2=&a[i]:p2=p2;} a[10]=*p1;
a[11]=*p2;
a[12]=sum/10; ofstream ofile("w1.txt",ios::out); if(ofile==0)return 0; for(i=0;i<13;i++)
{
ofile<<a[i]<<" ";
} ofile.close();
return 0;
} 展开
4个回答
推荐于2018-03-13
展开全部
这个不是你程序的问题,是Windows记事本的Bug,因为程序输出的某些字符触发了这个bug,记事本把文件当成unicode编码处理,结果乱码。
把这句
ofile<<a[i]<<" ";
换了一下顺序改成
ofile<<" "<<a[i];
就不会乱码了。
记事本这样的bug很多,
比如记事本新建一个文本,打开以后输入:联通 这两个字, 保存 ,关闭记事本。 再打开,你看看变成什么了?
有一个开玩笑的说法是因为中国联通把微软中国得罪了……
记事本保存的时候,默认使用ansi编码
但是用ansi编码呢,联通这两个字的开头正好是:fffe..... 这样的,于是再打开呢,他就以为是utf-8编码了,但是按照utf-8来解码呢,却造成乱码了
把这句
ofile<<a[i]<<" ";
换了一下顺序改成
ofile<<" "<<a[i];
就不会乱码了。
记事本这样的bug很多,
比如记事本新建一个文本,打开以后输入:联通 这两个字, 保存 ,关闭记事本。 再打开,你看看变成什么了?
有一个开玩笑的说法是因为中国联通把微软中国得罪了……
记事本保存的时候,默认使用ansi编码
但是用ansi编码呢,联通这两个字的开头正好是:fffe..... 这样的,于是再打开呢,他就以为是utf-8编码了,但是按照utf-8来解码呢,却造成乱码了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询