博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《条目二十九:对于逐个字符的输入请考虑istreambuf_iterator》
阅读量:6704 次
发布时间:2019-06-25

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

《条目二十九:对于逐个字符的输入请考虑istreambuf_iterator》

1.使用:
ifstream inputfile("xxxx");string fileDate((istream_iterator
(inputfile)), istream_iterator
());

在流输入的时候遇到空格就跳过,也就是不会读入空格字符。

2.原因:

istream_iterator使用operator>>来完成这个读入操作的,然而operator>>会跳过空白字符。

3.一种解决办法:

跳过skipws标志

ifstream inputfile("xxxx");inputfile.unsetf(is::skipws);//禁止忽略inputfile中的空格string fileDate((istream_iterator
(inputfile)), istream_iterator
());
4.不良反应:

每调用一次operator>>都会附加好多操作:

  • 1.内部sentry对象的构造和析构
  • 2.检查可能影响流的标志
  • 3.检查所有可能发生的错误
  • 4.检查流输入的异常发生

所以,在需要对逐个字符串读取的情况下,使用ifstream inputfile("xxxx");时效率是非常低下的。

在这里就引用这个条目的方法:

ifstream inputfile("xxxx");string fileDate((istreambuf_iterator
(inputfile)), istreambuf_iterator
());

经有人测试,效率比原来的提高40%。

转载于:https://www.cnblogs.com/liangjf/p/10634078.html

你可能感兴趣的文章
算法笔记_069:Floyd算法简单介绍(Java)
查看>>
dubbo常见错误
查看>>
java-信息安全(十四)-初探SSL
查看>>
1497 取余运算
查看>>
ElasticSearch 应用场景
查看>>
关于haproxy负载均衡的算法整理
查看>>
CentOS 6.x安装配置MongoDB 3.4.x
查看>>
微信小程序,创业新选择
查看>>
Android -- 从源码带你从EventBus2.0飚到EventBus3.0
查看>>
洛谷4月月赛R2
查看>>
innobackupex不停库的数据备份并恢复到别的服务器上【转】
查看>>
php将汉字转换为拼音和得到词语首字母(三)
查看>>
Strut2------源码下载
查看>>
UI 经常用法总结之--- UILabel UITextField (不断更新中)
查看>>
FastJson和Gson和Json数据解析分析和用法
查看>>
算法笔记_186:历届试题 高僧斗法(Java)
查看>>
css3 position fixed居中的问题
查看>>
Android之——AIDL深入
查看>>
new BigDecimal(0.01) 与 new BigDecimal(String.valueOf(0.01))的区别 (转)
查看>>
Google 最新的 Fuchsia OS【科技讯息摘要】
查看>>