发现的问题:
问题1:如果fin指向文件缓冲区中剩余字符数小于sizeof szTmp,read的行为如何?char szTmp[10]; fin.read(szTmp,sizeof szTmp); fout.write(szTmp,sizeof szTmp);
问题2:如何读取剩余的字符?
解决:
问题1:如果fin指向文件缓冲区中剩余字符数小于sizeof szTmp,read的行为如何?
解:fin.read(szTmp,sizeof szTmp)将剩余字符全部放入szTmp的前几位,并返回0(正常读取完指定字符数时返回1),同时设置eofbit
问题2:如何读取剩余的字符?
解:
注:fin.gcount()返回上一次使用read、get、getline、ignore时读取的字符数char szTmp[10]; fin.read(szTmp,sizeof szTmp) fout.write(szTmp,fin.gcount());
循环读取一整个文件的改进:
char szTmp[10]; while(fin.read(szTmp,sizeof szTmp)) fout.write(szTmp,sizeof szTmp); fout.write(szTmp,fin.gcount());