从一行中读取字段的最简单方法

Easiest way to read in fields from a line

本文关键字:字段 读取 最简单 方法 一行      更新时间:2023-10-16

我正在从文件中读取行。每一行都遵循这种精确的格式,并带有一个|分隔符:

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个分隔符的行。

您可以用该行初始化std::istringstream,然后用getline(isstream, field, '|')读取字段。将调用放入循环中以读取字段,直到流失败:

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