可能说的不明白,举个例子:char a[8] = {0};
memset(a, 'A', sizeof(a));
这样,在内存里,从低位到高位的8个char,依次为 'A','A','A','A','A','A','A','A'
那对于 WCHAR wa[8] = {0};
我也想实现一次性赋值,使得内存里,从低位到高位的16个char,依次为 'A','\0','A','\0','A','\0','A','\0','A','\0','A','\0','A','\0','A','\0'
但是我不想使用循环赋值的方式,如下:
for (i=0; i<(sizeof(wa)/sizeof(WCHAR)); i++)
{
    wa[i] = 'A';
}所以,就想问问,有没有类似 memset 的宽字符填字 的版本 ??还是说 memset里面本身也是通过 循环来实现的??

解决方案 »

  1.   

    WCHAR ch='A';
    memset(a, ch, sizeof(wa)/sizeof(WCHAR));
      

  2.   

    是这个样子的:
    如果你的项目码制是Unicode
    memset(a, 'A', sizeof(a));就可以了如果你的项目码制是多字节的
    TCHAR wa[8] = {0};
    memset(wa, 'A', 2*sizeof(wa));就可以了总结:多乘以个2就可以啦
    教程
      

  3.   

    memset的第一个参数是void *,无所谓宽字符版本
      

  4.   

    你的要求没有函数达得到,memset与字符无关。它每次填充一个字节,填充内容你传什么,它都按int看待。2楼,你说的调试过吗?
      

  5.   

    用wmemset就好了。
    2楼说的有问题,memset是没有编译条件的,不会自动识别的。
      

  6.   

    这个出来的是 'A','A','A','A','A','A','A','A','A','A','A','A','A','A','A','A' 吧?
      

  7.   

    不好意思,可能说的有出入,没实验,因为根据概念出发。回帖比较多,Sorry了。
      

  8.   

    char a[8] = {0};
    std::fill_n( a , 8 , 'A' );

    wchar_t wa[8] = {0};
    std::fill_n( wa , 8 , 'A' );
      

  9.   

    正P,大小一共才sizeof(wa),你要把不属于你的内存也清掉?
      

  10.   

    WCHAR ch='A';
    memset(a, ch, sizeof(wa)/sizeof(WCHAR));
      

  11.   

    memset里面本身也是通过 循环来实现的
    没错
      

  12.   

    我确实没实验过,但是
    码制切换
    TCHAR类型会转变。这个是肯定的。答错不是很正常么?楼主不采纳不给分就可以了
      

  13.   

    memset 数组的话 直接sizeof 不管是多字节 还是unicode 都可以   堆指针的话(既然是动态分配 大小应该自己是知道的 ) 直接用分配的大小 作第三个参数 好像不必弄个宽字节专用的吧  这样就可以了