C++ 如何访问wchar\u t*的wchar\u t?

C++ 如何访问wchar\u t*的wchar\u t?,c++,c,pointers,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; 这有什么问题?取消循环中的wc引用 wbuffer[buflen] = *wc; 不清楚你想做什么 wbuffer未初始化 您试图将指向wcha

这是我的代码:

   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;

这有什么问题?

取消循环中的wc引用

wbuffer[buflen] = *wc;

不清楚你想做什么

  • wbuffer未初始化
  • 您试图将指向wchar\u t的指针存储到wchar\u t数组中

  • 请解释该程序的用途。

    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
    

    首先,什么是缓冲区大小?它是sizeof(wchar\u t)的倍数吗?如果没有,那就做吧

    其次,
    wc
    是指向
    wchar\u t
    的指针,也就是说,您可以作为
    wc[index]
    访问它的
    wchar\u t
    ,其中
    index
    的最大值可以是
    buffer\u size/size(wchar\u 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
    }
    
    //如果您不知道缓冲区大小,则需要使用此“if”!
    if(缓冲区大小%sizeof(wchar\u t))
    缓冲区大小=(缓冲区大小/sizeof(wchar\u t)+1)*sizeof(wchar\u t);
    wchar_t wbuffer[512];
    wchar_t*wc=(wchar_t*)malloc(缓冲区大小);
    int-buflen=0;
    int maxindex=buffer\u size/sizeof(wchar\u t)-1;
    int指数=0;
    
    while(index)这没什么问题……出什么问题了?可能是wbuffer[buflen]=*wc;或者wbuffer[buflen]=*(wc+i);?或者wbuffer[buflen]=wc[0];有人猜到了吗?或者你愿意提供缺少的细节吗?(定义缓冲区大小,之前填充wc的代码,while循环,修改buflen的代码,…)@西蒙:我显然是瞎子;)这个问题缺少重要的细节。您希望实现什么?它与您观察到的行为有何不同?在一个从套接字读取多字节字符的示例中就有。