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

C++ 从一行中读取字段的最简单方法,c++,C++,我正在读文件中的行。每一行都遵循此精确格式,并带有一个|分隔符: 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 我使用ifstream和getline从文件中获取每一行。用n个分隔符在一行中获取所有字段的最佳方法是什么?这可以通过字符串流实现吗?我可以使用find和substr来装配一些东西

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

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
我使用ifstream和getline从文件中获取每一行。用n个分隔符在一行中获取所有字段的最佳方法是什么?这可以通过字符串流实现吗?我可以使用find和substr来装配一些东西,但它会很快变得丑陋,而且我认为它不能考虑一个具有n个数量可变分隔符的行。

您可以使用该行初始化std::istringstream,然后使用getlineisstream读取字段,字段“|”。将调用放入循环以读取字段,直到流失败:

std::istringstream isstream(line);
for (std::string s; getline(isstream, s, '|');)
  // do stuff with s
您可以使用该行初始化std::istringstream,然后使用getlineisstream、字段“|”读取字段。将调用放入循环以读取字段,直到流失败:

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

请用完整的代码示例完成您的答案。这样就很清楚了。啊,我不知道getline上的第三个选项@Bob,std::getline得到一行,然而std::istream::getline得到一个部分行,尽管它的名称!请用完整的代码示例完成您的答案。这样就很清楚了。啊,我不知道getline上的第三个选项@Bob,std::getline得到一行,然而std::istream::getline得到一个部分行,尽管它的名称!