C++指针用cout输出字符串问题
本帖最后由 bester 于 2019-11-8 22:18 编辑首先MutexName的地址是0x01564d28,他是一个unicode字符串,很明显 前8个字节,也就是两个unicode字符,是乱码,所以呢我想跳过这个乱码,也就是要令b值=0x01564d30
然后*b输出这个字符串,但是问题来了,无论怎么样,我只能在控制台窗口输出一个\号,也就是只能输出2个字节的字符,没有办法形成字符串,想问一下大佬 这个要怎么样才能输出字符串?
补充一点,MutexName是用malloc 申请了1024个字节,用memset初始化为0过了,应该不是结束符的问题
不知道我有没有描述清楚,感谢大家的帮助 MutexName你malloc申请的,不应该是地址常量吗?可以加4? 试试wchar_t * b=MutexName;
b=b+4;
无闻无问 发表于 2019-11-8 22:33
MutexName你malloc申请的,不应该是地址常量吗?可以加4?
WCHAR*MutexName=(WCHAR*)malloc(1024);
指针不是可以加减吗? 无闻无问 发表于 2019-11-8 22:35
试试wchar_t * b=MutexName;
b=b+4;
还是不行,不知道为啥 是不是编码原因?{:1_908:} 610100 发表于 2019-11-8 22:57
是不是编码原因?
我项目属性一般都设置成了多字节,总不能多字节不能用wchar吧?不过你提醒了我, 感谢,我试试 %s表示输出的是char类型吧?%S才是输出wchar_t吧??好像是的,呜呼... 再说了,都用C++了,干嘛还要用printf,直接cout<<b<<endl.试试 bester 发表于 2019-11-8 22:40
还是不行,不知道为啥
你没看到,指针变量b所指已经正确,不对是你输出有问题吧