游戏开发论坛

 找回密码
 立即注册
搜索
查看: 12895|回复: 16

c++中的string如何转化为wchar_t

[复制链接]

2

主题

29

帖子

29

积分

注册会员

Rank: 2

积分
29
发表于 2011-3-17 17:01:00 | 显示全部楼层 |阅读模式
被宽窄字符困扰好多次了算是,这次遇到的问题依旧是转化。
以前在用c的时候觉得最不方便使用的就是char*了,好不容易c++有string了发现似乎又没有转化为宽字符的函数,于是乎我又回到了c字符串的“原始年代”。
想问下是否已有转化函数或者宏可以实现转化效果,比如一个函数需求参数为wchar_t*,那除去将string内容转化成char*再转化成wchar_t*之外,是否已有系统函数实现功能,如果没有的话我也只能自己写了。。。。

2

主题

29

帖子

29

积分

注册会员

Rank: 2

积分
29
 楼主| 发表于 2011-3-17 17:03:00 | 显示全部楼层

Re:c++中的string如何转化为wchar_t

另外还想问string内部字符是如何存储的,char还是wchar_t?

33

主题

159

帖子

272

积分

中级会员

Rank: 3Rank: 3

积分
272
QQ
发表于 2011-3-18 09:51:00 | 显示全部楼层

Re:c++中的string如何转化为wchar_t

先把string 转LPSTR ,这个OK吧?
然后,用下面的函数
LPCWSTR Str2WStr(LPCSTR in_str) //LPCSTR 转LPCWSTR 注意,这里没有擦屁股
{
        int Len=::MultiByteToWideChar(CP_ACP,0,in_str,-1,NULL,0);//取得字符串长度
        LPWSTR out_str=new TCHAR[Len];
        MultiByteToWideChar(CP_ACP,0,in_str,-1,out_str,Len);
        return out_str;

}
这个func有点问题滴,没办法把这里面new 出来的 out_str干掉,只有在函数外面XP股,当然,如果不干掉这个LPWSTR 问题也不大,毕竟字符串在内存中占的位置实在是不大

2

主题

29

帖子

29

积分

注册会员

Rank: 2

积分
29
 楼主| 发表于 2011-3-18 13:58:00 | 显示全部楼层

Re:c++中的string如何转化为wchar_t

多谢楼上~~
发现自己没学过windows编程还是麻烦很多的,或许还得找时间学学吧。。
至于delete问题,函数里的out_str作为参数传进来是不是会好一点呢?

1

主题

28

帖子

30

积分

注册会员

Rank: 2

积分
30
QQ
发表于 2011-3-18 16:16:00 | 显示全部楼层

Re:c++中的string如何转化为wchar_t

有个std::wstring来着,对应的wchar_t ……

0

主题

113

帖子

122

积分

注册会员

Rank: 2

积分
122
发表于 2011-3-18 18:08:00 | 显示全部楼层

Re:c++中的string如何转化为wchar_t

既然用unicode为什么不用wstring呢?

0

主题

58

帖子

58

积分

注册会员

Rank: 2

积分
58
发表于 2011-3-18 18:19:00 | 显示全部楼层

Re:c++中的string如何转化为wchar_t

typedef std::basic_string<TCHAR, std::char_traits<TCHAR>, std::allocator<TCHAR> > tstring;
typedef std::basic_stringstream<TCHAR, std::char_traits<TCHAR>,std::allocator<TCHAR> > tstringstream;

11

主题

102

帖子

123

积分

注册会员

Rank: 2

积分
123
发表于 2011-3-20 12:16:00 | 显示全部楼层

Re: c++中的string如何转化为wchar_t

建议你先搞清楚字符的编码页,大致上分为:unicode(包含UTF8,UTF16,UTF32) 和 非unicode(GB2312,BIG5,...);
Windows api中有两个函数可以用来做编码页转换:MultiByteToWideChar,WideCharToMultiByte .

3

主题

187

帖子

217

积分

中级会员

Rank: 3Rank: 3

积分
217
发表于 2011-3-20 12:37:00 | 显示全部楼层

Re:c++中的string如何转化为wchar_t

如果用的微软VS系列工具,7楼就是答案

2

主题

29

帖子

29

积分

注册会员

Rank: 2

积分
29
 楼主| 发表于 2011-3-20 20:34:00 | 显示全部楼层

Re:c++中的string如何转化为wchar_t

对不起各位大大,我竟然不知道有wstring这个东西。。。。
然后想了解这方面的应该看什么,windows程序设计跟windows核心编程么?
这方面知识是必须的么?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-8 05:25

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表