multi-byte wide-char

/** C++ 字符串的一点点转换*/
#include <iostream>
#include <string>
#include <cstring>
#include <cstdlib>
#include <clocale> //setlocale
#include <Windows.h>
#include <WinCon.h>
using namespace std;
//using namespace System; //需要CLR支持wchar_t* mbs2wcs(const char* mbstr)
{
wchar_t* wcstr = NULL;// Get the size of wchar_t after converted
#ifdef WIN32
int size = MultiByteToWideChar(CP_UTF8, 0, mbstr, -1, NULL, 0);
#else
size_t size = mbstowcs(NULL, mbstr, 0);
#endifwcstr = new wchar_t[size+1];
if (wcstr)
{
memset(wcstr, 0, size * sizeof(wchar_t));
#ifdef WIN32
int ret = MultiByteToWideChar(CP_UTF8, 0, mbstr, -1, wcstr, size);
if (ret == 0) // MultiByteToWideChar returns 0 if it does not succeed.
#else
size_t ret = mbstowcs(wcstr, mbstr, size+1);
if (ret == -1)
#endif
{
delete[] wcstr;
wcstr = NULL;
}
}return wcstr;
}char* wcs2mbs(const wchar_t* wcstr)
{
char* mbstr = NULL;// Get the size of char after converted
#ifdef WIN32
int size = WideCharToMultiByte(CP_UTF8, 0, wcstr, -1, NULL, 0, NULL, NULL);
#else
size_t size = wcstombs(NULL, wcstr, 0);
#endifmbstr = new char[size+1];
if (mbstr)
{
memset(mbstr, 0, size * sizeof(char));
#ifdef WIN32
int ret = WideCharToMultiByte(CP_UTF8, 0, wcstr, -1, mbstr, size, NULL, NULL);
if (ret == 0) // MultiByteToWideChar returns 0 if it does not succeed.
#else
size_t ret = wcstombs(mbstr, wcstr, size+1);
if (ret == -1)
#endif
{
delete[] mbstr;
mbstr = NULL;
}
}return mbstr;
}int main(int argc, char *argv[]){
setlocale(LC_ALL, "chs");//设置代码页,简体中文是936
SetConsoleOutputCP(936);cout<<"string convert..`\nchar *\nwchar_t\n`\n"<<endl;char *str = "long long ago, there is a girl, she\'s name is little redhat.";
cout<<"\nchar *str :\n"<<str<<endl;//mbstowcs && wcstombs
// Convert to a wchar_t*wchar_t *wstr;
wstr = mbs2wcs(str);
wcout<<"\nwchar_t *wstr : \n"<<wstr<<endl;cout<<"sizeof(*str): "<<sizeof(*str)<<" byte"<<endl;  
cout<<"sizeof(*wstr): "<<sizeof(*wstr)<<" byte"<<endl;    //wstr指向第一个字符'l'占了16bit=2bytereturn 0;
}


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/243677.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

中值滤波器

中值滤波器 `timescale 1ns / 1ps module median_filtering(input clk,input rst_n,input [15:0] data_in,input data_in_en,input hs_in,input vs_in,output [15:0] data_out,output data_out_en,output hs_out,output vs_out);wire [15:0] line0; wire [15:0] line1; wire […

台湾印象之一:金马奖之夜

本月初赴台北参加由金马影展主席焦雄屏主持的“2008合作制片会议”&#xff0c;并出席了第45届金马奖颁奖典礼。走过红地毯&#xff0c;回首众多明星星光灿烂&#xff0c;鱼贯而入。当晚最耀眼的莫过于李安与舒淇组合。刚一进门就被记者包围&#xff0c;不能挪步。我也凑趣&…

台湾印象之三:吃与喝

梅子餐厅是我吃过的最有味道的小店。老板是一个白净也很有风度的老阿婆。这里的担仔面是一绝。还有炒肝&#xff0c;甜油而不腻&#xff0c;口感极妙。 金马影展主席焦雄屏女士在梅子餐厅宴请我和大为导演&#xff0c;还有几位内地来的女演员和电影官员。 度小月&#xff0c;非…

ubuntu16.04安装CecureCRT 并破解

下载ubuntu16可用的CecureCRT 注册机 下载需要2积分 下载完后执行 tar -xvf scrt-8.1.1.1319.ubuntu16-64.tar.gz $wget http://download.boll.me/securecrt_linux_crack.pl $sudo perl securecrt_linux_crack.pl /usr/bin/SecureCRT [sudo]password for root: crac…

AXI总线协议介绍

AXI总线协议介绍 AXI(Advanced eXtensible Interface)协议是一种面向高性能、高带宽系统设计的总线协议,能够满足各种高速系统的总线协议,能够满足各种高速系统的总线互连。 AXI协议的主要特点有: 独立的地址,控制和数据接口支持使用字节选通的不对齐数据的传输基于特定地…

VS2010支持C++11(原来的C++0x标准)

为什么电脑装上VS2010卡的要死&#xff0c;是电脑配置太垃圾了吗&#xff1f;是的吧

台湾印象之四:风流人物

台湾导演丁仰国&#xff08;作品《还珠格格》&#xff09;&#xff0c;大陆演员邵兵&#xff08;作品《红河谷》&#xff09;。 《海角七号》的导演魏德圣从李安和林青霞手里接过台湾地区最具人气电影奖。林青霞老了&#xff0c;可星光依旧。 周迅依然很迷人。她的《画皮》《女…

关于某公司冒充InfoQ中文站举办活动的声明

近日本网站发现有公司以InfoQ中文站的名义&#xff0c;给一些作者/专家的单位打电话联系&#xff0c;邀请其参加该公司举办的某技术英雄会活动。事后经作者/专家核实&#xff0c;这家公司为猎头公司&#xff0c;据分析其目的是收集作者/专家的信息。\u0026#xD;\nInfoQ中文站郑重…

如何映射本地虚拟机或远程服务器磁盘到本地

无论是用超级终端登陆虚拟机或服务器&#xff0c;还是映射虚拟机或服务器的磁盘到本地&#xff0c;都需要安装openssh-server&#xff0c;命令如下&#xff1a; ningubuntu:~$ sudo apt install openssh-server 下面进入正题。 当然&#xff0c;你可以使用vmware tools来实现本…

递归 将一个整数逆序

//将一个整数int倒转过来 #include <iostream> using namespace std;//利用引用 void IntRev(int nsrc, int &ndes) {if (0 nsrc){return;}else{ndes ndes*10 nsrc%10;IntRev(nsrc/10, ndes);} }//利用局部static变量只初始化一次的特性 int IntRev2(int num) {st…

MATLAB数据分析2

MATLAB数据分析2 %特殊矩阵%通用的特殊矩阵 %zeros函数:产生全0矩阵,即零矩阵 %格式: %zeros(m):产生mxm零矩阵 %zeros(m,n):产生mxn零矩阵 %zeros(size(A)):产生与矩阵A同样大小的零矩阵 % A = zeros(2,3) % B = zeros(size(reshape(A,3,2)))%ones函数:产生全1矩阵,即幺矩…

奥尼尔的话剧《榆树下的欲望》

好久没看话剧了。今天在人艺小剧场看了美国现代剧作家尤金奥尼尔&#xff08;Eugene ONeill,1888-1953&#xff09;的话剧《榆树下的欲望》。导演是任鸣。主要演员分别是郑天玮、张志忠、王雷等。这部戏是奥尼尔最著名的悲剧之一&#xff0c;据说曹禺先生当年写《雷雨》的时候&…

简单计算题

#include <iostream> #include <iomanip> //setprecision 设置输出精度 #include <cmath> using namespace std;//递增的函数 double fun(double x) {return (x pow(x, 2) pow(x, 3) pow(x, 4) pow(x, 5)); }int main(int argc, char *argv[]) {doubl…

台湾印象之五:宝岛万象

刚到台中&#xff0c;午饭时间&#xff0c;记者围住一位美女——张榕容&#xff0c;电影《渺渺》的演员&#xff0c;入围了本届金马奖“新人奖”。据说她是中国和荷兰的混血。 制片会议间隙表演的节目。一个男扮女装的舞者。 街头一只双目失明的老狗&#xff0c;被一个小孩子嬉…

CMOS传感器简介

CMOS传感器简介 图像传感器主要有两类,即CCD(Charge Coupled Device,电荷耦合器件)和CMOS(Complementary Metal Oxide Semiconductor,互补金属氧化物半导体)。CCD传感器和CMOS传感器都是将光线(光子)转换成电子信号(电子)。 CCD和CMOS成像器都是利用光电效应通过光产生电子信…

qt开发环境 - c++之输入,输出,名字空间定义,名字空间指令,名字空间声明

#include <QCoreApplication> #include <iostream>using namespace std;//包含后就不用 std::cout了&#xff0c;直接coutnamespace ns1 {int pram 3;void foo(void){std::cout << "ns1 " << std::endl;}} namespace ns2 {int pram 6;} na…

《草原安魂曲》《自由意志》及其他我喜欢的电影海报

《自由意志&#xff0c;Der Freie Wille 》2006年柏林电影节参展的德国影片。片长160分钟。导演是格拉斯尼。这部影片在首演时引起很大的非议和争论&#xff0c;有人还将男主人公与希特勒做了比较。电影沉闷、凄冷&#xff0c;但底蕴很足&#xff0c;让你不能不坚持&#xff13…

【转载】生物软件之DNA分析

DNA分析 JaMBW 1.1 分子生物学软件包。 ANNHYB 4.938 用来帮助进行PCR引物设计与基因探针设计的软件。 Chromas 2.32 ABI格式文件显示与编辑软件。 DNAProbe 核苷酸序列设计工具。 DnaSP 4.10.9 基因多态性分析软件。 DFW 2.51 trail DNA分析软件。 Artemis R9 以J…

台湾印象之六:林志玲神话

林志玲被称为台湾的“国宝”&#xff0c;一句“孚日大家纺真正的大家纺&#xff0c;好柔柔啊”&#xff0c;迷倒了多少人&#xff1f;又酸倒了多少人&#xff1f;曾经是一个普通模特&#xff0c;一个属虎的射手座女孩&#xff0c;几年下来就成为台湾最耀眼的公众、娱乐人物&…

DDR3 IP设计说明

DDR3 IP设计说明 DDR3 IP核概述 DDR3控制器包括用户接口(User Interface)模块、存储器控制模块(Memory Controller)模块、初始化和校准(Initialization/Calibration)模块、物理层(Physical Layer)模块。用户接口模块用于连接FPGA内部逻辑;存储器控制器模块实现DDR3的主要读…