返回信息流RT,这两个能转吗?怎么我都搜不到呢……
这是一条镜像帖。来源:北邮人论坛 / cpp / #14796同步于 2008/10/28
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
[求助]_TCHAR*到string的转换怎么做?
mas
2008/10/28镜像同步9 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
这要看你的项目属性
TCHAR在unicode的项目里就是wchar_t
在multibyte下就是char
先搞清楚自己的项目属性,再看char或者wchar到string的转化
嗯,是不是有可能用到wstring……
唉,项目设置这个搞得头都大了,如果用了unicode,是不是还需要在main函数开头的时候setlocale,这几个关系到现在都不是很清楚。
C/C++的国际化和本地化到现在就没搞清楚过。
no
widechartomultibyte并不是wchar转string的,而是unicode双字字符串转编码的,根据你指定的代码页不同,原始的unicode string会被转化为指定编码集的multibyte字符串,当然,这个字符串是用char*指向的
建议你直接找wchar转string class的,否则string是不是还要调整字符集?没试过,你直接传一个任意字符集的char*进去应该不行
如ericy所说,用wstring吧。。。
其实我不建议你把windows data types和std c++放在一起使用
和c++结合好的windows编程是mfc,抑或clr
都很恶心
好像可以,用WideCharToMultiByte把wchar_t给char *,然后再给string,似乎是成功了……
哎,我也很头疼阿,没有统一,真的是很难办。。。
其实光从LZ的要求来看,widechartomultibyte是可以完成这个功能的,
首先以null指针调用widechartomultibyte一次,计算出你的个wchar*里面的字符,专成char*需要多大的空间,然后new出那么大的空间,再调用一次widechartomultibyte,这样就能得到char*了,记住这个char*里面的编码是multibyte的,而不是unicode的。
char* 到string是天然兼容的,你就可以随便用了。
但是LZ,你真的希望在自己unicode的程序里面,使用multibyte的编码么?这个很容易把自己搞晕掉的。
反正记住,如果想要正确使用,程序员要保证
char* 和string里面的东西是multibyte的,
wchar*和wstring里面的东西是unicode的。
而且在输入输出的时候,也要时刻清楚自己目前在操作的文本是那种编码的,使用的流又是什么编码的。
【 在 rebirthatsix 的大作中提到: 】
: no
: widechartomultibyte并不是wchar转string的,而是unicode双字字符串转编码的,根据你指定的代码页不同,原始的unicode string会被转化为指定编码集的multibyte字符串,当然,这个字符串是用char*指向的
: 建议你直接找wchar转string class的,否则string是不是还要调整字符集?没试过,你直接传一个任意字符集的char*进去应该不行
: ...................
【 在 ericyosho 的大作中提到: 】
: 其实光从LZ的要求来看,widechartomultibyte是可以完成这个功能的,
: 首先以null指针调用widechartomultibyte一次,计算出你的个wchar*里面的字符,专成char*需要多大的空间,然后new出那么大的空间,再调用一次widechartomultibyte,这样就能得到char*了,记住这个char*里面的编码是multibyte的,而不是unicode的。
: char* 到string是天然兼容的,你就可以随便用了。
: ...................
恩,我记住了,谢谢~
哎,主要是之前习惯了string,手头的东西想赶紧先用string弄了,等闲下来再试试unicode。~
总之,非常感谢~