现在的位置: 首页 > 综合 > 正文

如何在各种字符串类型之间进行转换(VS2010)

2013年10月04日 ⁄ 综合 ⁄ 共 1494字 ⁄ 字号 评论关闭

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的那篇文章,以及本文中的代码。

【上篇】
【下篇】

抱歉!评论已关闭.