Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Александр Макед
0 / 0 / 0
Регистрация: 23.03.2013
Сообщений: 22
#1

чтение из файла и добавление в контейнер - C++

07.08.2013, 17:48. Просмотров 657. Ответов 2
Метки нет (Все метки)

[
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
26
27
                
                                std::ofstream out;
                out.open("FilegRANDCHILED.dat", std::ios::binary | std::ios::trunc);
                if(!out)
                {
                    MessageBox(hWnd, L"File no create!!!", L"Error", MB_ICONERROR | MB_OK);
                    break;
                }
                else
                {
                    MessageBox(hWnd, L"Begin write file!!!", L"OK", MB_ICONINFORMATION | MB_OK);
                    char ID[15]={"GrandchiledDat"};
                    out.write(ID, strlen(ID));
                    std::list<GrandchiledDat>::iterator iterWrite;
 
                    for(iterWrite = dataList.begin(); iterWrite != dataList.end(); iterWrite++)
                    {
                        out.write((reinterpret_cast<char*>(&(*iterWrite))), sizeof(*iterWrite));
                    }
                    if(!out)
                    {
                        MessageBox(hWnd, L"Write to file impossible !!!", L"Error", MB_ICONERROR | MB_OK);
                        break;
                    }
                    else 
                        MessageBox(hWnd, L"Write file OK!!!", L"OK", MB_ICONINFORMATION | MB_OK);
                }
]так записываем, судя по всему успешно.











а так читаем, и программа падает, файл открывается и когда начинает читать в буфер валится =(
[
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
std::ifstream From;
            From.open("FilegRANDCHILED.dat", std::ios::binary);
            if(!From)
            {
                MessageBox(hWnd, L"File no create!!!", L"Error", MB_ICONERROR | MB_OK);
                break;
            }
            else
            {
                MessageBox(hWnd, L"Begin read file!!!", L"OK", MB_ICONINFORMATION | MB_OK);
                char ID[15];
                From.read(ID, strlen(ID));
                MessageBox(hWnd, reinterpret_cast<LPCWSTR>(ID), L"OK", MB_ICONINFORMATION | MB_OK);
 
                GrandchiledDat gcdObj;
                while(!From.eof())
                    From.read(reinterpret_cast<char*>(&gcdObj), sizeof(/*GrandchiledDat*/gcdObj));
                dataList.push_back(gcdObj);
            }
]
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.08.2013, 17:48
Здравствуйте! Я подобрал для вас темы с ответами на вопрос чтение из файла и добавление в контейнер (C++):

Чтение из файла в контейнер map - C++
Вот есть структура struct Kino { int numb ; //номер кинотеатра string name; //название ктра vector&lt;string&gt; sv; //список...

Какой ассоциативный контейнер выбрать? И как реализовать в нем чтение из файла? - C++
Вот сама задание: Текстовый файл содержит следующую информацию: координату точки и угол наклона прямой, проходящей через эту точку....

Добавление значения в контейнер вектор, находящийся в map - C++
Возникла проблема: есть файл std формата: Миша 5 5 2 3 Влад 0 3 3 4 и т.д. Из него считываются данные в map &lt;string,vector&gt;. Нужно...

добавление в контейнер без указания типов данных? - C++
Привет, у меня проблема. Сразу перейду к коду: template &lt;class structType&gt; class CMyExperimentator { private: ...

Переделать в коде чтение из файла в чтение с клавиатуры - C++
Переделайте что бы текст считывался с клавиатуры, а не с файла! Буду благодарен за помощь! //файл должен начинаться со слова, между...

Считывание текста с файла в контейнер multimap - C++
Допусти у меня есть файл записанный вот таким методом #include &lt;iostream&gt; #include &lt;map&gt; #include &lt;string&gt; #include &lt;fstream&gt; ...

2
Fyret
185 / 171 / 13
Регистрация: 30.07.2013
Сообщений: 359
07.08.2013, 18:06 #2
Цитата Сообщение от Александр Макед Посмотреть сообщение
C++
1
2
char ID[15];
From.read(ID, strlen(ID));
strlen просто ищет первый нулевой символ, а у Вас в ID мусор после объявления. Используйте sizeof(ID).
0
Александр Макед
0 / 0 / 0
Регистрация: 23.03.2013
Сообщений: 22
07.08.2013, 19:16  [ТС] #3
Цитата Сообщение от Fyret Посмотреть сообщение
strlen просто ищет первый нулевой символ, а у Вас в ID мусор после объявления. Используйте sizeof(ID).
спасибо, заработала=)

Добавлено через 8 минут
Цитата Сообщение от Александр Макед Посмотреть сообщение
спасибо, заработала=)
можно закрывать=)

Добавлено через 20 минут
Цитата Сообщение от Fyret Посмотреть сообщение
strlen просто ищет первый нулевой символ, а у Вас в ID мусор после объявления. Используйте sizeof(ID).
в Общем работает, но при проверке оказывается что до конца не дочитывает=(

Добавлено через 30 минут
ПРИ ВОТ ТАКОЙ ГРУБОЙ ПРОВЕРКЕ
C++
1
2
3
4
                if(!From)
                    MessageBox(hWnd, L"File read imposible!!!", L"Error", MB_ICONERROR | MB_OK);
                else
                    MessageBox(hWnd, L"File read!", L"Ok", MB_ICONINFORMATION | MB_OK);
ОКАЗЫВАЕТСЯ ЧТО при чтении появились ошибки..
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.08.2013, 19:16
Привет! Вот еще темы с ответами:

Как положить строку из файла в контейнер vector - C++
Нужно считать строки из файла, и все строки, начинающиеся на &quot;a, c, e...&quot; в контейнер vector положить, а другие строки на &quot;b, d, f...&quot; в...

Заполнить контейнер map и vector данными из файла - C++
Текстовый файл содержит в себе информацию о пяти лифтах в виде: 12 900 first 10 600 second 15 700 third 20 1000 fourth 16 800...

Чтение из файла. Повторное чтение файла - C++
Добрый день. Необходимо реализовать в программе функцию повторного чтения данных из файла, в случае некорректного ввода их в оный. Вот...

Посимвольное чтение, добавление в конец строки - C++
Программа должна брать из файла массив символов, читать посимвольно и к каждому символу в конец добавлять .txt. Выходит не совсем...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru