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

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

Восстановить пароль Регистрация
 
Александр Макед
0 / 0 / 0
Регистрация: 23.03.2013
Сообщений: 22
07.08.2013, 17:48     чтение из файла и добавление в контейнер #1
[
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);
            }
]
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.08.2013, 17:48     чтение из файла и добавление в контейнер
Посмотрите здесь:

C++ добавление в контейнер без указания типов данных?
С помощью cin.getline считать все строки файла в контейнер (вектор или очередь) C++
C++ Заполнить контейнер map и vector данными из файла
C++ чтение из файла
Организовать заданную структуру данных: точка (x, y) плоскости, стек (добавление, удаление и чтение элемента) C++
Чтение из файла C++
C++ Как положить строку из файла в контейнер vector
C++ Чтение из файла в контейнер map

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Fyret
184 / 170 / 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
Регистрация: 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);
ОКАЗЫВАЕТСЯ ЧТО при чтении появились ошибки..
Yandex
Объявления
07.08.2013, 19:16     чтение из файла и добавление в контейнер
Ответ Создать тему
Опции темы

Текущее время: 17:43. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru