• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > wchar_t,char,string,wstring之间的相互转换

wchar_t,char,string,wstring之间的相互转换

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了wchar t转char,char wchar t,wchar t 转换为 char,char to wchar t,wchar t const char等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

在处理中文时有时需要进行wchar_t,char,string,wstring之间的转换。

其中char和string之间、wchar_t和wstring之间的转换较为简单,代码在vs2010下测试通过。

using namespace std;

//Converting a WChar string to a Ansi string
char *w2c(char *pcstr,const wchar_t *pwstr, size_t len)
{
 int nlength=wcslen(pwstr);
 //获取转换后的长度
 int nbytes = WideCharToMultiByte( 0, 0, pwstr, nlength, NULL,0,NULL, NULL );
 if(nbytes>len)   nbytes=len;
 // 通过以上得到的结果,转换unicode 字符为ascii 字符
 WideCharToMultiByte( 0,0, pwstr, nlength,   pcstr, nbytes, NULL,   NULL );
 return pcstr ;
}

int main(){

 setlocale(LC_ALL,"chs");
 char* cc = "this is a char 测试";
 wchar_t* wcc = L"this is a wchar 测试";
 string str("this is a string 测试 ");
 wstring wstr = L"this is a wstring 测试";


 //string to char
 const char* char_test = str.c_str();
 //cout<<"char_test:"<<char_test<<endl;

 //char to string
 string ss = cc;
 //cout<<"ss is :"<<ss<<endl;

 //wstring to wchar
 const wchar_t* wchar_test = wstr.c_str();
 //wcout<<wchar_test<<endl;

 //wchar to wstring
 wstring wss = wcc;
 wcout<<wcc<<endl;

 //char to wchar_t
 wchar_t *wc = new wchar_t[str.size()+1];
 //swprintf(wc,L"%S",cc);
 //wcout<<cc<<endl;
 delete []wc;

 // wchar_t to char
 char *pcstr = (char *)malloc(sizeof(char)*(2 * wcslen(wcc)+1));
 memset(pcstr , 0 , 2 * wcslen(wcc)+1 );
 w2c(pcstr,wcc,2 * wcslen(wcc)+1) ;
 free(pcstr);

 system("pause");
 return 1;
}
</div>

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 浅谈c++ 字符类型总结区别wchar_t,char,WCHAR
  • wchar_t,char,string,wstring之间的相互转换
  • 深入理解c++中char*与wchar_t*与string以及wstring之间的相互转换

相关文章

  • 2017-05-28C++时间戳转换成日期时间的步骤和示例代码
  • 2017-05-28如何应用C++的函数对象
  • 2017-05-28VC自定义消息响应函数postmessage用法示例
  • 2017-05-28如何解决C语言,函数名与宏冲突
  • 2017-08-27Effective STL 18 avoid using vector<bool>
  • 2017-05-28C++派生访问说明符小记(推荐)
  • 2017-05-28C语言字符串大小比较
  • 2017-05-28C++详解默认参数的构造函数及简单实例代码
  • 2017-05-28c++中的string常用函数用法总结
  • 2017-05-28C++将CBitmap类中的图像保存到文件的方法

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C++设置系统时间及系统时间网络更新的方法
    • C++中函数的用法小结
    • 指向类成员函数的指针其实并非指针
    • 解析shell排序的实现代码
    • C语言数据结构中二分查找递归非递归实现并分析
    • C语言中fgetgrent()函数和fgetpwent()函数的用法对比
    • C++中 STL list详解及简单实例
    • VC++实现文件与应用程序关联的方法(注册表修改)
    • 什么是工程/项目?
    • C语言 基本语法示例讲解

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有