Как мне прочитать несколько строк из файла?

0

Я пишу функцию, которая берет входной файл из командной строки. Входной файл выглядит следующим образом:

11 25
1 2 3 4 5 6 7 8
1 2 3
1 3 5
1 2 2

Я хочу сохранить два числа в первой строке в целочисленных переменных. Вторая строка хранится в массиве. Третья и следующая строки хранятся в другом контейнере. В настоящее время у меня есть программа, которая может читать с первой строки:

void classFunctions::storeInput(const char* inputFile)
{
  std::ifstream file(inputFile);
  std::string placeholderString;
  while(!file.eof())
  {
    while(std::getline(file, placeholderString))
    {
     //Do something
    }
  }
}

Но как я могу изменить это, чтобы он мог читать со второй, третьей и последующих строк?

  • 0
    Вы должны уточнить свой вопрос, хотите ли вы сохранить каждое число в каждой строке как отдельный элемент в каком-либо контейнере, или вы хотите просто сохранить всю строку в контейнере? То есть, следует ли прочитать строку, а затем обойти все разделенные пробелами элементы в строке и рассматривать каждую вещь, разделенную пробелом, как свой собственный элемент? Потому что если вы просто хотите прочитать весь файл до eof, ваш код уже делает это прекрасно, если вы хотите сохранить каждую строку в векторе или что-то еще, это будет тривиальное изменение.
Теги:

2 ответа

0

После проверки, что текстовый файл пуст или нет, вы должны дважды позвонить getline() и продолжить чтение до eof() пор, пока eof()

getline(file, first_line);
//proceed to process with a stringstream
getline(file, second_line);
//process
while(true) {
    string line;
    getline(file, line);
    //process
    if(file.eof()) break;
}
0

Первая строка - это просто извлечение на две переменные. Для второй строки следует использовать std::getline(), и вы должны, возможно, использовать ее в std::istringstream и использовать std::istream_iterator для анализа строки в массиве. Остальные строки требуют последовательных вызовов для std::getline().

Ещё вопросы

Сообщество Overcoder
Наверх
Меню