如何访问wchar_t *的wchar_t?

时间:2010-12-05 08:34:07

标签: c++ c pointers

这是我的代码:

   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 个答案:

答案 0 :(得分:1)

在你的循环中取消引用wc。

wbuffer[buflen] = *wc;

答案 1 :(得分:1)

首先,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}}

答案 2 :(得分:0)

目前还不清楚你要做什么。

  1. wbuffer未初始化
  2. 您正在尝试将指向wchar_t的指针存储到wchar_t
  3. 数组中

    请解释该计划的目的。

答案 3 :(得分:0)

在您的情况下,

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