Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.01.2019, 05:52   #1
noir09
 
Регистрация: 28.12.2018
Сообщений: 6
По умолчанию ошибка при считывании данных

у меня тут вероятно не одна ошибка, по замыслу после ввода нанных в вектор я должен записать его в файл, а потом вывести эти данные из файла на экран, но на строчке cout << pnt[i]; вызывается какое-то исключение и программа прерывается, если удалить , ofstream::app, то исключение не вызывается, но данные не выводятся на экран
Код:
#include "stdafx.h"
#include <iostream>
#include "string"
#include <vector>
#include "windows.h"
#include "fstream"
using namespace std;


int main()
{

	SetConsoleCP(1251);
	SetConsoleOutputCP(1251);
	vector<string> books;
	ofstream DataB;
	DataB.open("booksdata.txt", ofstream::app);
	for (;;)
	{
		if (!DataB.is_open())
		{
			cout << "ошибка открытия файла" << endl;
		}
		system("cls");
		int a;
		cin >> a;
		system("cls");//очистка текста
		if (a == 1)
		{
			string name;
			cin.ignore(256, '\n');
			cout << "Введите название книги" << endl;
			getline(cin, name);
			books.push_back(name);
			books.push_back("слово");
			DataB.write((char*)&books, sizeof(books));
			ifstream fin;
			fin.open("booksdata.txt");
			if (!fin.is_open())
			{
				cout << "ошибка открытия файла" << endl;
			}
			vector<string> pnt;
			int i = 0;
			while (fin.read((char*)&pnt, sizeof(books)))
			{
				cout << pnt[i];//ошибка тут
				i++;
			}
			fin.close();
			system("pause");
			break;
		}
	}

}
пробывал подобные с класами и получалось, почему с вектором не получается не понимаю.
noir09 вне форума Ответить с цитированием
Старый 03.01.2019, 07:51   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Не знаю, что у вас получалось, но написан бред.
1. Вектор это класс, а не массив и в него нельзя прям сначала писать. У него есть метод data, который возвращает указател на выделенную память.
2. Вы не сказали вектору выделить память - куда вы пишите то?
3. Используйте std::getline или std::copy, std::back_inserter
p51x на форуме Ответить с цитированием
Старый 05.01.2019, 13:06   #3
noir09
 
Регистрация: 28.12.2018
Сообщений: 6
По умолчанию

спс
noir09 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Зависает при считывании данных Aleksandr Общие вопросы Delphi 2 04.10.2013 10:30
Ошибка при считывании из файла JustSay Общие вопросы Delphi 3 29.07.2013 13:28
доступ по неверному указателю при построчном считывании данных из файла okrill Общие вопросы C/C++ 3 01.09.2012 19:07
Ошибка при считывании из базы. VladimirNew БД в Delphi 1 16.02.2012 16:21
Помогите разобраться, ошибка при считывании из ini файла XATAB Помощь студентам 4 13.02.2007 05:57