#include<iostream>
#include<iostream>
#include<fstream>
using namespace std;
int main()
{
ofstream otxt("d:\\txt");
ofstream obin("d:\\bin", ios::binary);
unsigned int c;
for(c=0; c<256; c++)
{
otxt<<(char)c;
obin<<(char)c;
if((c + 1) % 10 == 0)
{
/*
写文件有文本格式和二进制格式之分,ios::binary就是二进制
它与文本格式的差别在于, 文本格式会增加一些格式上的信息,比如换行'\n'用文本输出是两个字节0x0Ah,0x0Dh,而如用二进制输出则是0x0Ah
故而 txt的字节数 > bin的字节数
*/
otxt<<'\n';
obin<<'\n';
}
}
otxt.close();
obin.close();
ifstream itxt("d:\\txt", ios::binary);
ifstream ibin("d:\\bin");
//读文件时最大的区别:文本方式在遇到第一个EOF字符(ASCII:26)时就结束,二进制方式直到文件结尾。
char ch;
cout<<"txt as binary: "<<endl;
while(itxt.get(ch))
{
cout<<ch<<" ["<<(int)ch<<"] ";
}
cout<<'\n'<<endl;
cout<<"bin as text: "<<endl;
while(ibin.get(ch))
{
cout<<ch<<" ["<<(int)ch<<"] ";
}
cout<<endl;
itxt.close();
ibin.close();
return 0;
}
文本文件本身跟二进制文件一样,都是由0/1位组成,只是一般所说的文本文件每8位(一字节)必须是可显示的ASCII码范围(0~127),而二进制每8位任意(0~255)。
写文件有文本格式和二进制格式之分,ios::binary就是二进制, 它与文本格式的差别在于,文本格式会增加一些格式上的信息,比如换行'\n'用文本输出是两个字节0x0Ah [10],0x0Dh [13]. 而如用二进制输出则是0x0Ah [10].
而读文件时最大的区别:文本方式在遇到第一个EOF字符(ASCII:26)时就结束,二进制方式直到文件结尾。
温馨提示:答案为网友推荐,仅供参考