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

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

Войти
Регистрация
Восстановить пароль
 
Omnio
0 / 0 / 0
Регистрация: 19.07.2009
Сообщений: 48
#1

Записать структуру в wchar_t массив - C++

04.09.2015, 15:51. Просмотров 206. Ответов 1
Метки нет (Все метки)

Подскажите как же можно преобразовать структуру в wchat_t массив, чтобы после записать этот массив в файл через wstream ?
Ниже приведённый пример работает соответственно для структуры с char элементами, и обычным fstream, который всё нормально записывает в файл. В случае же с wstream файл создаётся, но остаётся пустым.

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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#if 1
 
#define SIZE_EXMPL 1000
 
struct astructExmpl
{
    DWORD   dwExmpl;
    char    chExmpl;
    char    arrExmpl[SIZE_EXMPL];
};
struct wstructExmpl
{
    DWORD   dwExmpl;
    wchar_t wchExmpl;
    wchar_t warrExmpl[SIZE_EXMPL];
};
 
void main(void)
{
    std::fstream afile;
    afile.open("afile", std::ios::binary | std::ios::out | std::ios::in);
 
    std::wfstream wfile;
    wfile.open("wfile", std::ios::binary | std::ios::out | std::ios::in);
 
    if (afile.is_open())
    {
        astructExmpl AStruct;
        AStruct.dwExmpl = 259;
        AStruct.chExmpl = 'D';
        AStruct.arrExmpl = "Struct";
 
        //* CHAR SOLUTION
        char szAStruct[sizeof(AStruct)];
        memcpy(szAStruct, &AStruct, sizeof(AStruct));
        afile.seekp(0, std::ios::end);
        afile.write(szAStruct, sizeof(szAStruct));
        afile.close();
        //*/
    }
 
    if (wfile.is_open())
    {
        wstructExmpl WStruct;
        WStruct.dwExmpl = 259;
        WStruct.wchExmpl = 'Ф';
        WStruct.warrExmpl = L"Структура";
 
        //* WCHAR SOLUTION
        // that does NOT Work !
        wchar_t szWStruct[sizeof(WStruct)];
        memcpy(szWStruct, &WStruct, sizeof(WStruct));
        wfile.seekp(0, std::ios::end);
        wfile.write(szWStruct, sizeof(szWStruct));
        wfile.close();
        //*/
    }
}
 
#endif
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.09.2015, 15:51
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Записать структуру в wchar_t массив (C++):

Почему const wchar_t* воспринимается как wchar_t* ? - C++
Здравствуйте. Я написал вот так: const wchar_t* dir = directory.c_str(); StartModule(dir); и такая ошибка появляется : ...

Wchar_t двумерный массив с инициализацией - C++
Подскажите, возможно ли сделать двумерный wchar_t массив с инициализацией? wchar_t text; //без инициализации

Как заполнить массив wchar_t пробелами - C++
Пробовал вот так: int length = 4; wchar_t* str = new wchar_t; FillMemory(str, length,L' '); str = L'\0'; wprintf(L"%s!", str); ...

Указатель на const двумерный массив wchar_t - C++
Подскажите, как создать указатель на в функцию приходит (const wchar_t _text) объявляется wchar_t txt = {L"1", L"2"}; ...

Wchar_t и unsigned wchar_t в windows - C++
Печально, но факт: wchar_t - 2 байта, unsigned wchar_t - 4 байта Вопрос1: используется ли unsigned wchar_t для хранения...

Cannot convert from 'wchar_t' to 'const wchar_t *' - C++
такой код, порылся в инете не помогло. ломать голову надоело может кто подскажет, буду благодарен. wchar_t * english = L"abvgdee...

1
nmcf
5754 / 5065 / 1732
Регистрация: 14.04.2014
Сообщений: 20,749
04.09.2015, 16:22 #2
Ты усложняешь. В двоичном режиме потоку всё равно, что содержится в структуре - используй обычный fstream.
memcpy() тоже лишняя.
C++
1
afile.write((char *)&AStruct, sizeof(AStruct));
В 46-й строке должно быть L'Ф'.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.09.2015, 16:22
Привет! Вот еще темы с ответами:

Записать vector<vector<wchar_t>> в текстовый файл - C++
Подскажите пожалуйста, как записать vector&lt;vector&lt;wchar_t&gt;&gt; в файл. Файл необходимо открывать через _wfopen. Пробую так, не получается....

Записать структуру в файл - C++
подскажыте, как записать структару в файл!

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

Как записать структуру в файл? - C++
есть структура struct frend { char name; char tel; };как записать ее в файл и потом считат соответственно)) заранее...


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

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

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