我的数据文件的第一行是三列(或四列)数据的标题:
%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
完成(即读取一行,构建一个流,然后从流中读取),但这往往会慢一些。。。