Страницы

Поиск по вопросам

воскресенье, 5 января 2020 г.

Чтение строк из файла

#cpp


Нужно написать программу, позволяющую считать из файла строки со смешанными данными.
Файл:


  Ivanov 20 3
  Petrov 18 2
  Sidorov 24 4


Каким образом забить такие данные в массив, чтобы потом можно было отсортировать?
    


Ответы

Ответ 1



std::istream умеет читать данные, разделенные пробельными символами. Можно объявить структуру для записей в файле struct Record { std::string name; int a; int b; }; и прочитать файл в std::vector этих структур std::vector records; std::ifstream file("file.txt"); Record tmp; while (file >> tmp.name >> tmp.a >> tmp.b) // Читаем поля если файл не закончился. records.push_back(tmp); После чтения можно проверить был ли файл прочитан полностью if (file.bad()) { std::cout << "I/O error\n"; // Пока файл читали, с ним что-то случилось. return 1; } if (!file.eof()) { std::cout << "Invalid data\n"; // Не удалось распарсить число. return 1; } И наконец отсортировать этот вектор: auto by_name = [](const auto& a, const auto& b) { return a.name < b.name; }; std::sort(records.begin(), records.end(), by_name);

Ответ 2



// reading a text file #include #include #include using namespace std; int main () { string line; ifstream myfile ("example.txt"); if (myfile.is_open()) { while ( myfile.good() ) { getline (myfile,line); cout << line << endl; } myfile.close(); } else cout << "Unable to open file"; return 0; } В качестве массива используй Vector. Точно не помню, вроде его и сортировать можно сразу.

Комментариев нет:

Отправить комментарий