头文件<fstream>, 最好不要用 fstream.h. 我在写程序的时候,发现用后者会出现不理想的输出,具体原因不清楚,大概是C++标准的问题。
Solution1:
e.g.1
char str[90];
infile>>str;
outfile<<str<<endl;
infile>>str;
outfile<<str<<endl;
infile>>str;
outfile<<str<<endl;
输入文件infile格式:
****************kusdafi********************
**************hlkafshd*********************
***********hkalsf**8
输出文件outfile格式:(保持与infile一致)
****************kusdafi********************
**************hlkafshd*********************
***********hkalsf**8
程序解释:定义str[90],通过infile>>str;可以读入一行字符,只要这行字符的数目小于89(最后一个位置要存放结束符‘/0’),都可以读入,并且通过outfile<<str<<endl;输出倒输出文件中。
缺点:当这一行字符中有空格的时候,infile>>str 只能读到空格的时候结束
当有空格的时候程序效果: 输入文件格式
1234 5678
9001 90002
则对应输出文件格式:
1234
5678
9001
Solution2:
优点:getline语句可以读入一行,不管带不带空格。
e.g.
char starSingnalTemp1[81];
char starSingnalTemp2[81];
char starSingnalTemp3[81];
infile.getline(starSingnalTemp1,81,'/n');
infile.getline(starSingnalTemp2,81,'/n');
infile.getline(starSingnalTemp3,81,'/n');
outfile.write(starSingnalTemp1,80);
outfile<<endl;
outfile.write(starSingnalTemp2,80);
outfile<<endl;
outfile.write(starSingnalTemp3,80);
outfile<<endl;
outfile<<"0 1 0"<<endl;
解释:
infile.getline(starSingnalTemp1,81,'/n');
读入一行字符,当遇到'/n'(回车符)的时候,结束读入操作。字符个数最多80个(不包括字符串
结束符'/0'),第81位保存结束符。在这里,这句话等价于infile.getline(starSingnalTemp1,81);
如果写成infile.getline(starSingnalTemp1,80);而文件中的一行恰好为80个字符的时候,函数会报错,存储空间少了一位。
outfile.write(starSingnalTemp1,80);
将数组中存放的钱80个字符写入输出文件,注意这80个字符是不包含结束符'/0'的计数,如果字符串第
80位是结束符,那么应该写成outfile.write(starSingnalTemp1,79);
当红色的语句 outfile<<endl;没有写入的时候,输入输出效果:
输入文件:
1234 5678
1256 7890
1122
输出文件:数据都放在一行上面
1234 5678 口口口口口口口口……1256 7890口口口口口口…… 1122口口口口口口……0 1 0
当红色的语句 outfile<<endl;写入的时候,输入输出效果:
输入文件:
1234 5678
1256 7890
1122
输出文件:
1234 5678
1256 7890
1122
0 1 0