读取csv文件以获取特定信息

时间:2016-03-18 13:55:15

标签: c++ csv

我想知道如何从C ++中的csv文件中读取特定值,然后读取文件中的下四个项目。例如,这就是文件的样子:

fire,2.11,2,445,7891.22,water,234,332.11,355,5654.44,air,4535,122,334.222,16,earth,453,46,77.3,454

我想要做的是让我的用户选择其中一个值,让我们说“空气”,然后阅读接下来的四个项目(4535 122 334.222 16)。

我只想使用fstream,iostream,iomanip个库。我是一个新手,我写代码很可怕,所以请你温柔。

1 个答案:

答案 0 :(得分:0)

您应该阅读有关解析器的信息。 Full CSV specifications

如果您的字段没有逗号和双引号,并且您需要快速解决方案,请搜索getline / strtok,或尝试此操作(未编译/测试):

typedef std::vector< std::string > svector;

bool get_line( std::istream& is, svector& d, const char sep = ',' )
{
  d.clear();
  if ( ! is )
    return false;

  char c;
  std::string s;
  while ( is.get(c) && c != '\n' )
  {
    if ( c == sep )
    {
      d.push_back( s );
      s.clear();
    }
    else
    {
      s += c;
    }
  }
  if ( ! s.empty() )
    d.push_back( s );

  return ! s.empty();
}

int main()
{
  std::ifstream is( "test.txt" );
  if ( ! is )
    return -1;
  svector line;
  while ( get_line( is, line ) )
  {
    //...
  }
  return 0;
}