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;
不清楚你想做什么
请解释该程序的用途。
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的代码,…)@西蒙:我显然是瞎子;)这个问题缺少重要的细节。您希望实现什么?它与您观察到的行为有何不同?在一个从套接字读取多字节字符的示例中就有。