getline()函数将标题聚集在一起



我的数据文件的第一行是三列(或四列)数据的标题:

%b02_a08    b02_a08_counts  b02_a08_eu

正如您所看到的,这些列是用TAB键分隔的。当我使用getline()时,它将整行内容混合在一起。如果我使用getline(,,'t'),它将为该行返回%b02_a08。我需要把这一行分开,因为我阅读了每一个标题。

如果有人知道一种方法,可以从数据文件中读取标头,并将它们放入vector<string>中,这样我就可以在它们上运行Regex,找到其中包含"eu"的标头,那就是我所需要做的。好吧,然后读取数据列,我可能会遇到同样的TAB分隔问题。

使用流Luke。。。

如,

// process the header
std::getline(some_input_stream, line))
{
  std::istringstream str(line);
  // Now reaad each field
  str >> header_1 >> header_2 >> header_3;
  if (str >> header_4)
  {
    // process the optional column
    have_col_4 = true;
  }
}
// Now to read the rows
while(some_input_stream >> col_1 >> col_2 >> col_3)
{
  if (have_col_4)
    some_input_stream >> col_4;
}

最后一个块也可以用std::getline完成(即读取一行,构建一个流,然后从流中读取),但这往往会慢一些。。。

最新更新