博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++ Exercises(九)
阅读量:6793 次
发布时间:2019-06-26

本文共 826 字,大约阅读时间需要 2 分钟。

<<C++ Primer>>第三版P905页的这个程序有很多问题想不明白:
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
    fstream inOut( "D:\\copy.out", ios_base::in|ios_base::app);
    int cnt=0;
    char ch;
    inOut.seekg(0);
    
    while ( inOut.get( ch ) )
    {
        cout.put( ch );
        cnt++;
        if ( ch == '\n' )
        {
            streamoff  mark = inOut.tellg();// 标记当前位置
            inOut << cnt << ' ';
            inOut.seekg( mark ); // 恢复位置
        }
    }
    inOut.clear();
    inOut << cnt << endl;
    cout << "[ " << cnt << " ]\n";
    return 0;
}
用下面的数据进行测试:
 abcd
efg
hi
j
分别保存为data.txt和copy.out,运行结果:
abcd
efg
hi
[ 12 ]
后来我想可能是因为不是读的二进制的缘故,所以我改为:
 
fstream inOut( "D:\\data.txt", ios_base::in|ios_base::app|ios_base::binary);
分别进行测试后,结果就更奇怪了。
这是data.txt的:
abcd
efg
hi
[ 15 ]
这是copy.out的:
abcd
efg
j
[ 18 ]
 
这到底是为什么呢?
本文转自Phinecos(洞庭散人)博客园博客,原文链接:http://www.cnblogs.com/phinecos/archive/2008/03/20/1114916.html,如需转载请自行联系原作者
你可能感兴趣的文章
Attention is All You Need | 每周一起读
查看>>
刘地生|微服务的实践
查看>>
「地球一小时」熄灭灯光,点亮希望
查看>>
贵州伯克利大数据创新研究中心揭牌 分两阶段建设
查看>>
商业综合体中都有哪些智能安防应用?
查看>>
2020年全球光伏逆变器市值将超过71亿美元
查看>>
爱立信副总裁:5G技术碎片化不是大问题
查看>>
大数据,意在创新与进步
查看>>
电子科大今年新增大数据技术等6个专业
查看>>
安徽省拟建大数据交易公司总投资223亿元
查看>>
美国国安局局长:美国即将部署先进网络武器
查看>>
DARPA如何定义网络作战空间
查看>>
苹果是否有能力再造一个企业级App Store?
查看>>
怎样选择合适的云服务器
查看>>
亚欧14国ATM机被攻击自动吐钱,或与东欧黑客团体有关
查看>>
Linux服务器网络连接有问题?Ping工具来帮忙
查看>>
Facebook新功能:自动识别哪些李鬼账号假冒您
查看>>
研发人员开发出一套硬件级别的后门技术
查看>>
电力“十三五” 光伏分布式6000万千瓦迎来机遇
查看>>
高桥洋接任索尼中国总裁:索尼营销第一人
查看>>