Я пишу функцию, которая берет входной файл из командной строки. Входной файл выглядит следующим образом:
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
}
}
}
Но как я могу изменить это, чтобы он мог читать со второй, третьей и последующих строк?
После проверки, что текстовый файл пуст или нет, вы должны дважды позвонить 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;
}
Первая строка - это просто извлечение на две переменные. Для второй строки следует использовать std::getline()
, и вы должны, возможно, использовать ее в std::istringstream
и использовать std::istream_iterator
для анализа строки в массиве. Остальные строки требуют последовательных вызовов для std::getline()
.