Другие языки программирования и технологии
Запись в файл структуры данных. С++
Как сделать цикл, для записи в файл структуры данных? Нужно вписывать данные об абонентах в файл, что бы потом с помощью этого же цикла можно было прочитать из файла.
#include <iostream>
#include <fstream>
#include <string>
#include <deque>
using namespace std;
struct subscriber {
friend ostream& operator<<(ostream& _cout, const subscriber& _subscriber);
string name;
string phone;
};
void russian();
int main() {
locale::global(locale(".866"));
deque<subscriber> d;
subscriber s;
string filename("phone-book.txt");
for (int i = 0; i < 2; ++i) {
wcout << L"\n Ф. И. О. : ";
getline(cin, s.name);
wcout << L" Телефон: ";
getline(cin, s.phone);
d.push_back(s);
}
system("cls");
ofstream os(filename.c_str());
try {
if (!os) throw runtime_error(filename);
while (!d.empty()) {
s = d.front();
os << s.name << '\n' << s.phone << '\n';
d.pop_front();
}
}
catch (runtime_error const& e) {
wcout << L" Ошибка: Не удаётся записать в файл ";
cout << e.what() << endl;
os.close();
}
os.close();
ifstream is(filename.c_str());
try {
if (!is) throw runtime_error(filename);
string name, phone;
while (getline(is, name) && getline(is, phone)) {
try {
s.name = name;
s.phone = phone;
d.push_back(s);
}
catch (...) {
is.close();
throw;
}
}
}
catch (runtime_error const& e) {
wcout << L" Ошибка: Не удалось открыть файл ";
cout << e.what() << endl;
is.close();
}
is.close();
for (deque<subscriber>::const_iterator ci = d.begin(); ci != d.end(); ++ci) cout << *ci;
cin.sync();
cin.get();
}
ostream& operator<<(ostream& _cout, const subscriber& _subscriber) {
_cout << _subscriber.name << ' ' << _subscriber.phone << '\n';
return _cout;
}
#include <fstream>
#include <string>
#include <deque>
using namespace std;
struct subscriber {
friend ostream& operator<<(ostream& _cout, const subscriber& _subscriber);
string name;
string phone;
};
void russian();
int main() {
locale::global(locale(".866"));
deque<subscriber> d;
subscriber s;
string filename("phone-book.txt");
for (int i = 0; i < 2; ++i) {
wcout << L"\n Ф. И. О. : ";
getline(cin, s.name);
wcout << L" Телефон: ";
getline(cin, s.phone);
d.push_back(s);
}
system("cls");
ofstream os(filename.c_str());
try {
if (!os) throw runtime_error(filename);
while (!d.empty()) {
s = d.front();
os << s.name << '\n' << s.phone << '\n';
d.pop_front();
}
}
catch (runtime_error const& e) {
wcout << L" Ошибка: Не удаётся записать в файл ";
cout << e.what() << endl;
os.close();
}
os.close();
ifstream is(filename.c_str());
try {
if (!is) throw runtime_error(filename);
string name, phone;
while (getline(is, name) && getline(is, phone)) {
try {
s.name = name;
s.phone = phone;
d.push_back(s);
}
catch (...) {
is.close();
throw;
}
}
}
catch (runtime_error const& e) {
wcout << L" Ошибка: Не удалось открыть файл ";
cout << e.what() << endl;
is.close();
}
is.close();
for (deque<subscriber>::const_iterator ci = d.begin(); ci != d.end(); ++ci) cout << *ci;
cin.sync();
cin.get();
}
ostream& operator<<(ostream& _cout, const subscriber& _subscriber) {
_cout << _subscriber.name << ' ' << _subscriber.phone << '\n';
return _cout;
}
В языке C это делается функциями fwrite и fread, но C++ намного более удобный язык, поэтому без мегабайтов кода никак не обойтись.
Похожие вопросы
- Pascal, структура данных "Cтек"
- Pascal, структура данных двусвязанный список
- Проблема с записью в файл в делфи
- Что такое алгоритмы и структуры данных в информатике поясните простым языком чтобы было понятно для чего это вообще?
- Структура данных "очередь". максимально доступно. и очень подробно объяснить функции с очередью!!!на с++ с указателями
- Как правильно читать и стоит ли книгу Кормена "Алгоритмы и структуры данных". Что вы из неё советуете почерпнуть ?
- Можно ли изучать Алгоритмы и структуры данных без знаний языков программирования? Язык думал после этого осваивать.
- Каждый ли программист должен изучить алгоритмы и структуры данных?
- turbo pascal операции записи в файл
- Какой максимальный размер ini файла? Сколько данных в него можно записывать?