Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Запись массива в файл, ----- 
:(
    Опции темы
13dreams
Дата 2.8.2010, 13:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 1.7.2010

Репутация: нет
Всего: нет



Подскажите как записать\считать двухмерный массив типа int  в файл? 


PM MAIL   Вверх
Earnest
Дата 3.8.2010, 09:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Например, CFile::Write, если MFC пользоваться. Если размеры массива не постоянны, впереди пишем два числа - размеры массива.


--------------------
...
PM   Вверх
13dreams
Дата 3.8.2010, 17:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 1.7.2010

Репутация: нет
Всего: нет



спасибо, разобрался

а как быть с массивом CString? я пытался аналогично массиву типа int

Код

CFile theFile;
CString F1name(_T("myfile.txt"));
BOOL bOpenOK;
CFileStatus status;
if( CFile::GetStatus( F1name, status ) )
{    // Открываем файл не создавая его
    bOpenOK = theFile.Open( F1name, 
        CFile::modeWrite ); }
else{    // Создаём файл и открываем его
    bOpenOK = theFile.Open( (LPCTSTR)F1name, 
        CFile::modeCreate | CFile::modeWrite);}

theFile.Write((void*) &txt, sizeof(txt));
theFile.Close();


txt - массив типа СString

Чтение:
Код

theFile.Open(F1name,CFile::modeRead);
theFile.Read((void*)&txt,sizeof(txt));
theFile.Close();

PM MAIL   Вверх
Earnest
Дата 5.8.2010, 07:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



13dreams, ты бы напрягся и подумал, что такое CString. А это всего лишь указатель на выделенную под строку память. А ты пытаешься записать его как POD. Т.е. пишешь текущие значения указателей. И что ты надеешься получить после чтения? Для строк есть свои функции (типа WriteString), причем сразу массив записать нельзя, только по одной. Сначала пишешь число строк в массиве, потом строки поштучно. Читаешь симметрично.
Можно еще пользоваться MFC-шной сериализацией, через CArchive. У MFC-шных контейнеров есть функция Serialize, и можно определить свой вариант SerializeElements для сложных структур (которые не POD и не строки - для строк есть реализация). 


--------------------
...
PM   Вверх
13dreams
Дата 5.8.2010, 10:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 1.7.2010

Репутация: нет
Всего: нет



Всё получилось, спасибо!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0627 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.