2014-04-30 31 views
1

我正在从文件中读取行。每行严格按照以下格式,具有|分隔符:从一行中读取字段的最简单方法

4|Get Shorty (1995)|01-Jan-1995||http://us.imdb.com/M/title-exact?Get%20Shorty%20(1995)|0|1|0|0|0|1|0|0|1|0|0|0|0|0|0|0|0|0|0 

我使用ifstreamgetline抢从文件中的每一行。用n个分隔符来抓取单行上所有字段的最佳方法是什么?这可以用字符串流完成吗?我可以使用findsubstr来安装某些东西,但它会变得非常快,我认为它不能考虑到具有可变n个分隔符的行。

回答

5

您可以用行初始化一个std::istringstream,然后用getline(isstream, field, '|')读出这些字段。将呼叫置于循环中读取字段,直到流失败:

std::istringstream isstream(line); 
for (std::string s; getline(isstream, s, '|');) 
    // do stuff with s 
+0

请使用完整的代码示例完成答案。这将是明确的方式。 – agarwaen

+0

啊,我不知道'getline'上的第三个选项! – Bob

+0

@Bob,'std :: getline'得到一条线,然而'std :: istream :: getline'得到了一条偏线(尽管它的名字是!)。 –

相关问题