#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::vectorrecords; 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. Точно не помню, вроде его и сортировать можно сразу.
Комментариев нет:
Отправить комментарий