Функция getline () объединяет заголовки - PullRequest
1 голос
/ 03 февраля 2012

Первая строка моего файла данных - это заголовки для трех (или четырех) столбцов данных:

%b02_a08    b02_a08_counts  b02_a08_eu

Как видите, столбцы разделены символом табуляции. Когда я использую getline(), он объединяет всю строку. Если я использую getline(,,'\t'), он возвращает %b02_a08 для строки. Мне нужна выделенная строка, потому что я читаю каждый заголовок.

Если кто-нибудь знает способ прочитать заголовки из файла данных и поместить их в vector<string>, чтобы я мог запустить Regex на них, чтобы найти тот, в котором есть «eu», это все, что мне нужно делать. Хорошо, вот и прочитайте столбцы данных, которые я, вероятно, столкнусь с той же проблемой с разделителями табуляции, там.

1 Ответ

0 голосов
/ 03 февраля 2012

Используй поток Люка ...

как в,

// 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 (то есть чтение строки, создание потока, затем чтение из потока), однако это имеет тенденцию быть несколько медленнее ...

...