从流中读取数据可以忽略行的方法

ZDNet软件频道 时间:2003-02-11 作者:BUILDER.COM |  我要评论()
本文关键词:cpptips
当你标准模板库(STL)流中读出数据的时候,程序员需要忽略一些行,特别是在以下的情况下:当你从文件中读取数据,某些数据很重要,但是里面包含注释,此时可以忽略注释;当你从CSV文件中读取数据,第一行包含列名字(只是附加信息),此时可以忽略。

当你标准模板库(STL)流中读出数据的时候,程序员需要忽略一些行,特别是在以下的情况下:

  • 当你从文件中读取数据,某些数据很重要,但是里面包含注释,此时可以忽略注释。
  • 当你从CSV文件中读取数据,第一行包含列名字(只是附加信息),此时可以忽略。
你可以调用ignore函数,如下所示:

// ignores one line or 512 chars
std::cin.ignore( 512, '
'); 

然而,其中也有如下缺点:

  • 不能使用熟悉的>>语法
  • 不能允许你一次忽略多行
  • 你必需指明要忽略的行数

ignore_lines/ignore_one_line类允许一次忽略多行操作,可以使用>>符号。你可以以以下方式进行操作:

  • ignore_lines( nLinesCount): 忽略n行,行与行的分隔符为' '
  • ignore_lines( nLinesCount, chDelimiter): 忽略n行,你必需自己定义分隔符
  • ignore_one_line():忽略一行,行与行的分隔符为' '
  • ignore_one_line( chDelimiter): 忽略一行,你必需自己定义分隔符

下面是它们用法的范例:

std::ifstream streamIn( "readme.txt");
// ignores 5 lines
streamIn >> ignore_lines( 5);
// ignores one line, and then reads the first word
std::string strWord;
streamIn >> ignore_one_line() >> strWord; 

当从流中读取数据时,可以很容易地忽略行,以下是实现的代码:

使用范例:



责任编辑:炒饭

欢迎评论或投稿


百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134