Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

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

у меня тут вероятно не одна ошибка, по замыслу после ввода нанных в вектор я должен записать его в файл, а потом вывести эти данные из файла на экран, но на строчке 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, 08:51   #2
p51x
Профессионал
 
Регистрация: 15.02.2010
Сообщений: 13,549
Репутация: 2400
По умолчанию

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

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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Зависает при считывании данных 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 06:57


08:12.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru