bester 发表于 2019-11-8 22:16

C++指针用cout输出字符串问题

本帖最后由 bester 于 2019-11-8 22:18 编辑


首先MutexName的地址是0x01564d28,他是一个unicode字符串,很明显 前8个字节,也就是两个unicode字符,是乱码,所以呢我想跳过这个乱码,也就是要令b值=0x01564d30
然后*b输出这个字符串,但是问题来了,无论怎么样,我只能在控制台窗口输出一个\号,也就是只能输出2个字节的字符,没有办法形成字符串,想问一下大佬 这个要怎么样才能输出字符串?

补充一点,MutexName是用malloc 申请了1024个字节,用memset初始化为0过了,应该不是结束符的问题

不知道我有没有描述清楚,感谢大家的帮助

无闻无问 发表于 2019-11-8 22:33

MutexName你malloc申请的,不应该是地址常量吗?可以加4?

无闻无问 发表于 2019-11-8 22:35

试试wchar_t * b=MutexName;
         b=b+4;

bester 发表于 2019-11-8 22:38

无闻无问 发表于 2019-11-8 22:33
MutexName你malloc申请的,不应该是地址常量吗?可以加4?

WCHAR*MutexName=(WCHAR*)malloc(1024);

指针不是可以加减吗?

bester 发表于 2019-11-8 22:40

无闻无问 发表于 2019-11-8 22:35
试试wchar_t * b=MutexName;
         b=b+4;


还是不行,不知道为啥

610100 发表于 2019-11-8 22:57

是不是编码原因?{:1_908:}

bester 发表于 2019-11-8 22:59

610100 发表于 2019-11-8 22:57
是不是编码原因?

我项目属性一般都设置成了多字节,总不能多字节不能用wchar吧?不过你提醒了我, 感谢,我试试

qq06314488 发表于 2019-11-8 23:14

%s表示输出的是char类型吧?%S才是输出wchar_t吧??好像是的,呜呼...

qq06314488 发表于 2019-11-8 23:16

再说了,都用C++了,干嘛还要用printf,直接cout<<b<<endl.试试

无闻无问 发表于 2019-11-9 09:52

bester 发表于 2019-11-8 22:40
还是不行,不知道为啥

你没看到,指针变量b所指已经正确,不对是你输出有问题吧
页: [1] 2 3
查看完整版本: C++指针用cout输出字符串问题