Как я могу получить доступ к wchar_t из wchar_t *? - PullRequest
1 голос
/ 05 декабря 2010

Это мой код:

   wchar_t wbuffer[512];
   wchar_t* wc = (wchar_t*) malloc(buffer_size);
   int buflen = 0;

// ... stuff


// inside the while loop
   wbuffer[buflen] = (wchar_t)wc;

что с этим не так?

Ответы [ 4 ]

1 голос
/ 05 декабря 2010

Прежде всего, что такое buffer_size?Это кратно sizeof(wchar_t)?Если нет, сделайте это!

Во-вторых, wc - указатель на wchar_t, это означает, что вы можете получить к нему wchar_t как wc[index], где максимальное значение index может быть buffer_size/size(wchar_t) - 1.Ваш код должен быть примерно таким:

//this 'if' is needed if you don't have any idea of what buffer_size could be!
if (buffer_size % sizeof(wchar_t))
       buffer_size = (buffer_size / sizeof(wchar_t) + 1) * sizeof(wchar_t);

wchar_t wbuffer[512];
wchar_t* wc = (wchar_t*) malloc(buffer_size);
int buflen = 0;
int maxindex = buffer_size/ sizeof(wchar_t) - 1;
int index = 0;
while ( index <= maxindex)
{
   //use wc[index]; here
    index++; //last line
}
1 голос
/ 05 декабря 2010

Разыменование wc внутри вашего цикла.

wbuffer[buflen] = *wc;
0 голосов
/ 05 декабря 2010

wc переменная в вашем случае является указателем, который указывает на память, которая содержит массивы широких символов. Если вы хотите получить широкий символ через переменную wc, вы должны написать что-то вроде

wbuffer[buflen] = (wchar_t)wc[0];//here you assign first wide character of wc to first wide char of wbuffer, if buflen == 0
0 голосов
/ 05 декабря 2010

Неясно, что вы пытаетесь сделать.

  1. wbuffer не инициализирован
  2. вы пытаетесь сохранить указатель на wchar_t в массив wchar_t

Пожалуйста, объясните цель программы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...