Форум программистов, компьютерный форум CyberForum.ru

Запись и чтение структуры с файла - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Составить программу вычисления произвольного количества значений выражения. Необходимость повторного вычисления значений и аргументы задает пользовате http://www.cyberforum.ru/cpp-beginners/thread1084143.html
Составить программу вычисления произвольного количества значений выражения. Необходимость повторного вычисления значений и аргументы задает пользователь. Вычисление выражения должно происходить в отдельной функции
C++ Куда отправляет return ,если при команде ничего прописано? куда отправляет return ,если при команде ничего прописано? http://www.cyberforum.ru/cpp-beginners/thread1084140.html
Все строки матрицы, где находится более двух простых чисел, обнулить. Найти среднее арифметическое элементов до и после обнуления C++
Задана матрица натуральных чисел A(n,n). Все строки, где находится более двух простых чисел, обнулить. Найти среднее арифметическое элементов матрицы до и после обнуления. Вывести сообщение, сколько строк было обнулено.
Разбить число на множители и определить простые они или нет C++
Нужна помощь народ! Надо написать код чтобы работал по такому принципу: разбить число на множители и определить простые они или нет, если простые то false, а если нет то true. Когда вводишь 10 то должно выходить false, т.к множители 10: 2 и 5(они простые). При вводе 250 должно быть true, т.к множители 250:2, 5, 10, 25, 50, 125.(не все простые) bool hasnonprimefactor(int n) { bool check =...
C++ Разработать процедуры для добавления, форматирования и очистки информации в файле http://www.cyberforum.ru/cpp-beginners/thread1084113.html
Разработать алгоритм и программу. Компонентами текстового файла являются символы, образующие наборы строк. Организовать следующие процедуры работы с файлом: - добавление информации в файл; - просмотр всего файла; - форматирование файла так, чтобы каждая строка в файле оканчивалась точкой и содержала ровно 60 символов; - очистка файла. Действия выполняются в произвольном порядке по...
C++ Определить слова, в которых первая буква присутствует только один раз; слова, в которых присутствуют только заглавные латинские буквы Вводится тест из заглавных и строчных латинских букв, пробелов. Количество символов в тексте не должно превышать 200. Слова разделяются пробелами. Определить и вывести: - слова, в которых первая буква присутствует только один раз; - слова, в которых присутствуют только заглавные латинские буквы. Я искал долго но не нашёл ответа на форуме( подробнее

Показать сообщение отдельно
Bretbas
22 / 17 / 1
Регистрация: 05.08.2013
Сообщений: 468
Завершенные тесты: 1
29.01.2014, 01:03     Запись и чтение структуры с файла
Привет всем.Столкнулся с проблема записи структуры в файл и чтения ее из файла.Вот сама структура:
C++
1
2
3
4
struct papa
{
vector<string> v;
};
Короче есть два exe-шника.Один записывает структуру в файл,вот main код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
...
void main()
{
fstream f("file",ios::out|ios:binary);
papa a;
string n;
for(int i = 0;i < 4; i++) // записываем 4 элемента в вектор
{
cin >> n;
a.v.push_back(n);
}
f.write(reinterpret_cast<char*>(&a),sizeof(a));
f.close();
}
...
Второй естественно считывает эту структуру с файла.Вот код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
...
void main()
{
fstream f1("file",ios::in |ios::binary);
do
{
papa b;
f1.read(reinterpret_cast<char*>(&b),sizeof(b));
for(int i = 0; i < b.v.size(); i++) //вывожу на экран вектор струтуры считанной с файла
cout << b.v[i];
}
while(!f1.eof());
f1.close();
}
...
Суть в том,что когда выпоняю сначало первый exe и записываю струтуру в файл,а потом когда хочу вторым exe-шником считать с файла эту структуру,то происходит ошибка считывания с файла информации.То есть 4 элемента вектора,которые я записал первым exe-шником не получается считать.
Как я только не пробовал сделать,ничего не получается.
Странно,если сделать так,что будет запись и чтение структуры в одной программе,то все работает!Вот как то так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
...
void main()
{
fstream f("file",ios::out|ios:binary);
papa a;
string n;
for(int i = 0;i < 4; i++) // записываем 4 элемента в вектор
{
cin >> n;
a.v.push_back(n);
}
f.write(reinterpret_cast<char*>(&a),sizeof(a));
f.close();
f1("file",ios::in|ios::binary);
do
{
papa b;
f1.read(reinterpret_cast<char*>(&b),sizeof(b));
for(int i = 0; i < b.v.size(); i++) //вывожу на экран вектор струтуры считанной с файла
cout << b.v[i];
}
while(!f1.eof());
f1.close();
}
...
А мне нужно именно в двух разных программах - одна для записи,другая для чтения.
Так вот вопрос:Помогите сделать?)И объясните в чем у меня трабл)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 14:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru