c语言窄字符转换为宽字符,将窄字符串转换为宽字符串
你应该这样做:
inline std::wstring convert(const std::string& as)
{
// deal with trivial case of empty string
if(as.empty()) return std::wstring();
// determine required length of new string
size_t reqLength = ::MultiByteToWideChar(CP_UTF8, 0, as.c_str(), (int)as.length(), 0, 0);
// construct new string of required length
std::wstring ret(reqLength, L'\0');
// convert old string to new string
::MultiByteToWideChar(CP_UTF8, 0, as.c_str(), (int)as.length(), &ret[0], (int)ret.length());
// return new string (compiler should optimize this away)
return ret;
}
这预计的std :: string是UTF- 8(CP_UTF8),当你有另一种编码替换代码页。
另一种方式可以是:
inline std::wstring convert(const std::string& as)
{
wchar_t* buf = new wchar_t[as.size() * 2 + 2];
swprintf(buf, L"%S", as.c_str());
std::wstring rval = buf;
delete[] buf;
return rval;
}
c语言窄字符转换为宽字符,将窄字符串转换为宽字符串相关推荐
- C语言学习(十二)C语言中的字符(宽字符与窄字符)、从字符谈谈C语言的编码、转义字符
C语言学习(十二)C语言中的字符(宽字符与窄字符).从字符谈谈C语言的编码.转义字符 目录 C语言学习(十二)C语言中的字符(宽字符与窄字符).从字符谈谈C语言的编码.转义字符 英文字符 字符的表示 ...
- C++ 宽字符 窄字符 char wchar
目录 wchar_t和char区别 宽字符 string和wstring的区别 wchar_t和char区别 参考链接 宽窄字符是与一个字符所占的字节数有关,如果一个字符只占一个字节,那么它就是窄字符 ...
- 宽字符wchar_t和窄字符char区别和相互转换
转自:http://blog.csdn.net/nodeathphoenix/article/details/7416725 1. 首先,说下窄字符char了,大家都很清楚,就是8bit表示的b ...
- mbstowcs 和 wcstombs函数:C语言提供的宽字符和多字节字符转换函数
C语言中的多字节字符与宽字符 字符型char只占八位,存储ascii码的,而宽字符型是为了存储多国语言的代码unicode,包括中文,法语德语什么的,8位256种不够用了 C语言原本是在英文环境中设计 ...
- C++ 宽字符(wchar_t)与窄字符(char)的转换
了解 长度 宽字符wchar_t的长度16位,可以用来显示中文等除英文外的其他文字, 窄字符 char 的长度 8 位,只能处理英文. 哪里可以见到 在VS2010, 2012, 2013 ...
- linux 宽字符串,C语言中的多字节字符与宽字符
C语言原本是在英文环境中设计的,主要的字符集是7位的ASCII码,8位的byte(字节)是最常见的字符编码单位.但是国际化软件必须能够表示不同的字符,而这些字符数量庞大,无法使用一个字节编码. C95 ...
- C语言中的多字节字符与宽字符
C语言原本是在英文环境中设计的,主要的字符集是7位的ASCII码,8位的byte(字节)是最常见的字符编码单位.但是国际化软件必须能够表示不同的字符,而这些字符数量庞大,无法使用一个字节编码. C95 ...
- C语言中宽字符和多字节字符
C 语言原本是在英文环境中设计的,主要的字符集是7 位的ASCII 码.从此开始,8 位的byte(字节)变成最常见的字符编码单位,但是国际化软件必须能够表示不同的字符,而这些字符数量庞大,无法使用一 ...
- volatile,可变参数,memset,内联函数,宽字符窄字符,国际化,条件编译,预处理命令,define中##和#的区别,文件缓冲,位域
1.volatile:要求参数修改每次都从内存中的读取.这种情况要比普通运行的变量需要的时间长. #include <stdio.h> #include <stdlib.h&g ...
- Windows核心思想-宽字符与窄字符(Unicode和ASCII)
目录 基本概念 演示 基本概念 宽字符:Unicode字符,双字节 窄字符:ASCII字符,单字节 Windows中所有的底层函数都是Unicode编码 COM组件必须使用Unicode编码(COM组 ...
最新文章
- qt mysql怎么选表_Qt的Mysql数据库表操作(1)
- 方法区中的无用类回收
- Android插件框架VirtualAPK
- c# out关键字 vb_c# 关键字:ref 和 out
- extjs Grid(一)
- 【MySQL】MySQL SQL查询语法建议
- android datepicker控件,android中控件DatePicker控件-Fun言
- 蓝桥杯 ADV-205 算法提高 拿糖果 java版
- 【懒人有道】在asp.net core中实现程序集注入
- html 360登录自动填写,汇总:如何在360浏览器中删除自动填写的表单?
- oracle 定义变量 查询,Oracle定义PL/SQL变量
- 拆装智伴机器人_智伴机器人软件下载-智伴下载 v4.2.8-pc6智能硬件网
- idea破解失败无法打开
- 由三个点坐标判断三个点能否组成三角形模板(自用,客官可取)
- 洛谷 P2014 选课
- C++在WINdow桌面绘制文字图形
- sklearn提示cannot import name ‘MaskedArray‘ from ‘sklearn.utils.fixes‘的解决方法
- Mybatis基本查询准备
- Mac OS 禁止屏幕休眠的方法
- 防止SQL注入攻击-学习笔记
热门文章
- 往年二本计算机分数线,全国一本、二本院校历年录取分数线汇总
- 黑马程序员_Java_多线程
- Windows 无法连接打印机,请检查打印机名并重试。如果这是网络打印机,请确保打印机已打开,并且打印机地址正确。报错代码:0x00000709
- Bootstrap项目之微金所
- 国嵌Linux视频驱动开发
- Alibaba Java 2021 技术图谱——学习永无止境
- biti_rainy's blog
- 求生之路2联机服务器没有响应,求生之路2进不了服务器
- react-ant design mobile - webpack 自定义主题
- newman的基本使用