//将string转换成wstring wstring StringToWString(const string& str) { wstring result; //获取缓冲区大小,并申请空间,缓冲区大小按字符计算 int len = ::MultiByteToWideChar(CP_ACP, 0, str.c_str(), str.size(), NULL, 0); TCHAR* buffer = new TCHAR[len + 1]; //多字节编码转换成宽字节编码 ::MultiByteToWideChar(CP_ACP, 0, str.c_str(), str.size(), buffer, len); buffer[len] = '/0'; //添加字符串结尾 //删除缓冲区并返回值 result.append(buffer); delete[] buffer; return result; } //将wstring转换成string string WstringToString(const wstring& wstr) { string result; //获取缓冲区大小,并申请空间,缓冲区大小事按字节计算的 int len = ::WideCharToMultiByte(CP_ACP, 0, wstr.c_str(), wstr.size(), NULL, 0, NULL, NULL); char* buffer = new char[len + 1]; //宽字节编码转换成多字节编码 ::WideCharToMultiByte(CP_ACP, 0, wstr.c_str(), wstr.size(), buffer, len, NULL, NULL); buffer[len] = '/0'; //删除缓冲区并返回值 result.append(buffer); delete[] buffer; return result; }

#include <string> #include <windows.h> using namespace std; //Converting a WChar string to a Ansi string std::string WChar2Ansi(LPCWSTR pwszSrc) ...{ int nLen = WideCharToMultiByte(CP_ACP, 0, pwszSrc, -1, NULL, 0, NULL, NULL); if (nLen<= 0) return std::string(""); char* pszDst = new char[nLen]; if (NULL == pszDst) return std::string(""); WideCharToMultiByte(CP_ACP, 0, pwszSrc, -1, pszDst, nLen, NULL, NULL); pszDst[nLen -1] = 0; std::string strTemp(pszDst); delete [] pszDst; return strTemp; } 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/ice197983/archive/2007/03/19/1533878.aspx

std::wstring Ansi2WChar(LPCSTR pszSrc, int nLen) ...{ int nSize = MultiByteToWideChar(CP_ACP, 0, (LPCSTR)pszSrc, nLen, 0, 0); if(nSize <= 0) return NULL; WCHAR *pwszDst = new WCHAR[nSize+1]; if( NULL == pwszDst) return NULL; MultiByteToWideChar(CP_ACP, 0,(LPCSTR)pszSrc, nLen, pwszDst, nSize); pwszDst[nSize] = 0; if( pwszDst[0] == 0xFEFF) // skip Oxfeff for(int i = 0; i < nSize; i ++) pwszDst[i] = pwszDst[i+1]; wstring wcharString(pwszDst); delete pwszDst; return wcharString; } 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/ice197983/archive/2007/03/19/1533878.aspx

wchar to char转换相关推荐

  1. 关于Char* ,CString ,WCHAR*之间的转换问题

    GDI+所有类的接口函数如果要传递字符串作为参数的话,似乎都用UNICODE串,即WCHAR*.我开始也被整得晕头转向,因为窗口编程所用往往是CString,用IO流读文件数据又得到char *.得益 ...

  2. wchar_t与char转换(转载)

    原文地址:http://hi.baidu.com/gchrist/blog/item/29a138f533383e24bd310934.html 环境:Dev cpp 平台i386 C++标准中,wc ...

  3. 简单的wchar_t 和 char 转换类, 且包含与UTF8的转换

    /***************************************************************简单的wchar_t 和 char 转换类,且包含与UTF8的转换(需要 ...

  4. CString、TCHAR*、char*转换 cstring与char *的转化(还包含很多种转换)

    stringbasicsystemdeletenulldate <1>CString 转化为 char* [cpp] view plaincopyprint? CString strDat ...

  5. ORA-22835 缓冲区对于 CLOB 到 CHAR 转换或 BLOB 到 RAW 转换而言太小

    前言 做项目的时候遇到一个报错:ORA-22835 缓冲区对于 CLOB 到 CHAR 转换或 BLOB 到 RAW 转换而言太小.查找原因发现是某个字段在数据库中是clob类型.然后sql语句进行查 ...

  6. oracle clob raw 转换,ORA-22835 缓冲区对于 CLOB 到 CHAR 转换或 BLOB 到 RAW 转换而言太小...

    前言 做项目的时候遇到一个报错:ORA-22835 缓冲区对于 CLOB 到 CHAR 转换或 BLOB 到 RAW 转换而言太小.查找原因发现是某个字段在数据库中是clob类型.然后sql语句进行查 ...

  7. int char转换成string java,java中int,char,string三种类型的相互转换

    如何将字串 String 转换成整数 int? int i = Integer.valueOf(my_str).intValue(); int i=Integer.parseInt(str); 如何将 ...

  8. ORA-22835:缓冲区对于CLOB到CHAR转换或BLOB到RAWZ转换而言太小。

    问题描述:Oracle数据库中报:缓冲区对于CLOB到CHAR转换或BLOB到RAWZ转换而言太小. 对CLOB字段进行截取,使其在TO_CHAR之前获取的数据小于4000字符,这样在进行TO_CHA ...

  9. 将char转换成wchar_t的方法

    char是8位字符类型,最多只能包含256种字符,许多外文字符集所含的字符数目超过256个,char型无法表示. wchar_t数据类型一般为16位或32位,但不同的C或C++库有不同的规定,如GNU ...

最新文章

  1. 营销型网站建设需要注意哪些问题?
  2. 丧心病狂的代码混淆操作以及怎么破
  3. mysql cluster (mysql 集群)安装配置方案
  4. java 动态单元格涂色_如何编写自定义DefaultTableCellRenderer来着色特定单元格并“保留”其他单元格的颜色,Java...
  5. Shell脚本基本规则
  6. 初中英语多词性单词怎么办_初中英语词性的分类及用法
  7. 狗头人与地下世界冒险模式通关记录 [20171224]
  8. iPhone开发入门(一)
  9. Boot重抽样获取logistic回归内部验证AUC可信区间
  10. 从一道题理解什么是java的引用
  11. 函数名作为字符串输出(Function Names as Strings)
  12. PHp勾股定理,2.6 探索勾股定理(1)
  13. PHPMyWind编辑器支持PowerPoint导入
  14. OSChina 周三乱弹 ——怎么让程序员精神百倍?
  15. extjs4.0 支持ie8_新的ExtJS发布4.02版和3.4版,提高性能并支持IE9
  16. 专注ASP.NET的博客【2012年度IT博客大赛分类推荐】
  17. 洛达AB1562M 悦虎2代AB1562M_V130.1.1.151固件
  18. rk3128 android7.1 hdmi音频调试
  19. 鲁大师检测硬盘丢失数据怎么恢复
  20. (转载)什么时候用分布调拨,什么时候用直接调拨,这两种方式有什么区别?

热门文章

  1. 关于电脑设置个性化此电脑属性打不开问题
  2. Codeforces Round #193 (Div. 2) B. Maximum Absurdity(线段树+思维)
  3. antd 表单 校验、取值、重置
  4. 【flutter】使用permission_handler配置android和 iOS的权限
  5. dojo框架的基本认识
  6. Django 1.9 支持中文
  7. VBoxGuestAdditions下载地址
  8. pacemaker+drbd主从
  9. 大数据平台技术——Scala+Hbase学习
  10. 嵌入式设备web服务器