如何在各种字符串类型之间进行转换(VS2010)
来源:互联网 发布:印章生成软件 编辑:程序博客网 时间:2024/06/04 17:58
MSDN中有一篇文章详尽的讲述了各种字符串间的转换方法及示例,地址:http://msdn.microsoft.com/zh-cn/library/ms235631.aspx
然而其中的例子有些诸如拼接字符串之类的累赘操作,正好最近在使用CFileDialog时遇到了必须把CString对象转换为char*型的情况,在网上搜了各种方法,诸如:(char*)(LPCTSTR)强转,利用Cstring类型的GetBuffer等,在VS2010中尝试无效后根据上面提到的文章编写了自己的代码:
以上代码可以正常使用。
这步使用强转不会有任何问题,因为LPCTSTR本身就是由WCHAR*用typedef声明来的,而CString到LPCTSTR的强转也没有任何问题的。利用(char*)(LPCTSTR)强转失败的原因在于WCHAR是宽字节,而char不是。我们利用wcstombs_s函数来使用从宽字节到非宽字节的安全转换。
wcstombs_s在MSDN中的说明:
地址:http://msdn.microsoft.com/zh-cn/library/s7wzt4be(v=VS.100).aspx
注意这两行代码:
wcslen(wpath) + 1是因为要算上字符串结尾的‘/0’,wpathsize*2是因为宽字节每字节是非宽字节的两倍。
再来看
path必须初始化否则无法使用。
其他类型的转换请参照本文开篇给出的MSDN的那篇文章,以及本文中的代码。
- 如何在各种字符串类型之间进行转换(VS2010)
- 如何:在各种字符串类型之间进行转换
- Visual C++ 如何:在各种字符串类型之间进行转换
- Visual C++ 如何:在各种字符串类型之间进行转换
- Visual C++ 如何:在各种字符串类型之间进行转换
- Visual C++ 如何:在各种字符串类型之间进行转换
- VC++ 如何:在各种字符串类型之间进行转换
- Visual C++ 如何:在各种字符串类型之间进行转换
- 如何:在各种字符串类型之间进行转换
- Visual C++ 如何:在各种字符串类型之间进行转换
- Visual C++ 如何:在各种字符串类型之间进行转换
- 如何:在各种字符串类型之间进行转换
- 【转载】如何:在各种字符串类型之间进行转换
- 如何:在各种字符串类型之间进行转换
- 如何:在各种字符串类型之间进行转换(zz)
- C++ 如何:在各种字符串类型之间进行转换
- Visual C++ 如何:在各种字符串类型之间进行转换
- 如何:在各种字符串类型之间进行转换
- Oracle 知识备份(三)2011年4月4号
- ELF对线程局部储存的处理(5)
- 品牌战略
- Ubuntu 10.10 下面禁用触摸板
- JSP Servlet 小记
- 如何在各种字符串类型之间进行转换(VS2010)
- FastWei is born...
- 详细解析Java中抽象类和接口的区别
- Spring aop使用实例
- 项目建立之初
- 关于驱动服务的小结
- 【转】BitTorrent协议详解
- ELF对线程局部储存的处理(6)
- ok6410 u-boot dm9000 驱动补丁 patch