С++ создать текстовый файл с произвольной информацией. Организовать просмотр содержимого файла. Организовать чтение и обработку данных из файла в соответствии с заданием. Сохранить полученные результаты в новый текстовый файл. «Область»: название области; областной центр; население; площадь территории; губернатор. Вывести данные про области, население которых меньше 2 млн. жителей.
1. Создание текстового файла с произвольной информацией:
Для этого используем операции записи в файл в C++. Вот пример кода, который создаст текстовый файл и запишет в него произвольную информацию:
```cpp
#include
int main() {
// открываем файл для записи
std::ofstream file("data.txt");
// записываем произвольную информацию в файл
file << "Область: Московская\n";
file << "Областной центр: Москва\n";
file << "Население: 12 млн. жителей\n";
file << "Площадь территории: 2,511 км²\n";
file << "Губернатор: Иванов Иван Иванович\n";
// закрываем файл
file.close();
return 0;
}
```
В приведенном примере используется объект `std::ofstream` для записи данных в файл. Метод `<<` используется для записи каждой строки в файл.
2. Просмотр содержимого файла:
Для просмотра содержимого файла можно использовать простую операцию чтения файла в C++. Вот пример кода, который прочитает и выведет содержимое файла:
```cpp
#include
#include
int main() {
// открываем файл для чтения
std::ifstream file("data.txt");
// проверяем, успешно ли открылся файл
if (!file.is_open()) {
std::cout << "Ошибка открытия файла!";
return 1;
}
// читаем и выводим содержимое файла
std::string line;
while (std::getline(file, line)) {
std::cout << line << std::endl;
}
// закрываем файл
file.close();
return 0;
}
```
В этом примере используется объект `std::ifstream` для чтения данных из файла, и метод `std::getline` для считывания каждой строки из файла и ее вывода на экран.
3. Чтение и обработка данных из файла в соответствии с заданием:
Для чтения и обработки данных из файла мы можем модифицировать предыдущий код следующим образом:
```cpp
#include
#include
#include
#include
struct Region {
std::string name;
std::string center;
unsigned int population;
double area;
std::string governor;
};
int main() {
// открываем файл для чтения
std::ifstream file("data.txt");
// проверяем, успешно ли открылся файл
if (!file.is_open()) {
std::cout << "Ошибка открытия файла!";
return 1;
}
std::vector
// читаем и обрабатываем данные из файла
std::string line;
while (std::getline(file, line)) {
std::stringstream ss(line);
Region region;
std::string regionInfo;
std::getline(ss, regionInfo, ':');
ss.ignore(1);
std::getline(ss, region.name);
std::getline(file, line);
std::stringstream ss2(line);
std::getline(ss2, regionInfo, ':');
ss2.ignore(1);
std::getline(ss2, region.center);
std::getline(file, line);
std::stringstream ss3(line);
std::getline(ss3, regionInfo, ':');
ss3.ignore(1);
ss3 >> region.population;
std::getline(file, line);
std::stringstream ss4(line);
std::getline(ss4, regionInfo, ':');
ss4.ignore(1);
ss4 >> region.area;
std::getline(file, line);
std::stringstream ss5(line);
std::getline(ss5, regionInfo, ':');
ss5.ignore(1);
std::getline(ss5, region.governor);
if (region.population < 2000000) {
regions.push_back(region);
}
}
// закрываем файл
file.close();
// сохраняем полученные результаты в новый текстовый файл
std::ofstream resultFile("result.txt");
for (const auto& region : regions) {
resultFile << "Область: " << region.name << std::endl;
resultFile << "Областной центр: " << region.center << std::endl;
resultFile << "Население: " << region.population << " жителей" << std::endl;
resultFile << "Площадь территории: " << region.area << " км²" << std::endl;
resultFile << "Губернатор: " << region.governor << std::endl;
resultFile << std::endl;
}
resultFile.close();
return 0;
}
```
В этом примере каждая строка из файла считывается в отдельную переменную типа `std::string`, а затем обрабатывается и сохраняется в структуру `Region`. Если население области меньше 2 млн., то эта область добавляется в `vector` regions.
4. Вывод данных про области с населением меньше 2 млн. жителей:
Мы уже добавили такую фильтрацию в предыдущем шаге, поэтому осталось только вывести полученные результаты. Они уже сохранены в новом текстовом файле `result.txt`, но вот пример кода, который выведет эти результаты на экран:
```cpp
#include
#include
#include
#include
struct Region {
std::string name;
std::string center;
unsigned int population;
double area;
std::string governor;
};
int main() {
// открываем файл для чтения
std::ifstream file("result.txt");
// проверяем, успешно ли открылся файл
if (!file.is_open()) {
std::cout << "Ошибка открытия файла!";
return 1;
}
// читаем и выводим содержимое файла
std::string line;
while (std::getline(file, line)) {
std::cout << line << std::endl;
}
// закрываем файл
file.close();
return 0;
}
```
В этом примере мы просто открываем и читаем файл `result.txt`, и выводим его содержимое на экран.