c++中wchar_t与char转换
sizeof( wchar ) = 2
sizoef( char ) = 1
环境:Dev cpp 平台i386
C++达标中,wchar_t是宽字符类别,每个wchar_t类别占2个字节,16位宽。汉字的表明就要用到wchar_t 。char,咱们都明白,占唯一字节,8位宽。其实明白了那个以后,要在wchar_t 和 char两种类别之间转换就不难呈现了。
wchar_t 转换为char 的代码Code如下:
有如下的wchar_t和char变量
wchar_t w_cn = '中';
char c_cn[2] = {'0'} ;
char *C2W(wchar_t w_cn , char c_cn[2])
{
//following code convert wchar to char
c_cn[0] = w_cn >> 8 ;
c_cn[1] = w_cn ;
c_cn[2] = '/0';
return c_cn ;
}
其中需求留意的是唯一16位的wchar_t需求用两个8位的char来存储之。咱们能够发明另外唯一疑难问题,wchar_t的高位字节因该存储在char数组的低位字节。(那里没有仔细研究了,觉得怪怪的)。
这是完成了wchar_t到char的转化,char到wchar_t的转换类似。
C++中,你要想那样:cout< string cn(c_cn);
cout<那样就能正确的打印wchar_t字符了。是否则感觉好像做了好多事,但是完成的却是很简单的事件?呵呵,其实我也有同感,但是没有办法。更简单的办法,当然是直接用API(我唯一是懒的去找了,二唯一自个动手转换有些物品看的更清楚咯),但是那样的转换更灵活,在实际中因该会用到的。
有了以上的基本,下面给出wchar_t字符串到char字符串的转换代码Code:
char *W2C(const wchar_t *pw , char *pc)
{
//cout<<*pw< *pc++ = *pw >> 8 ;
*pc = *pw ;
return 0 ;
}
char *wstr2cstr(const wchar_t *pwstr , char *pcstr, size_t len)
{
char *ptemp = pcstr ;
if(pwstr!=NULL && pcstr!=NULL)
{
size_t wstr_len = wcslen(pwstr) ;
len = (len > wstr_len ) ? wstr_len : len ;
while( len -- > 0)
{
W2C(pwstr , pcstr);
pwstr++ ;
pcstr +=2 ; //和咱们开端说的相同+2,否则+1
}
*pcstr = '/0';
return ptemp ;
}
return 0 ;
}
上面就代码Code,测试:
int main(int arg , char *argv[])
{
wchar_t pwstr[] = {'我' , '是' , '中' , '国' , '人'};
char *pcstr = (char *)new char[2 * wcslen(pwstr)+1] ;
memset(pcstr , 0 , 2 * wcslen(pwstr)+1 );
wstr2cstr(pwstr , pcstr , wcslen(pwstr)) ;
str.assign (pcstr);
cout< delete []pcstr ;
}
C++达标中,wchar_t是宽字符类别,每个wchar_t类别占2个字节,16位宽。汉字的表明就要用到wchar_t 。char,咱们都明白,占唯一字节,8位宽。其实明白了那个以后,要在wchar_t 和 char两种类别之间转换就不难呈现了。
wchar_t 转换为char 的代码Code如下:
有如下的wchar_t和char变量
wchar_t w_cn = '中';
char c_cn[2] = {'0'} ;
char *C2W(wchar_t w_cn , char c_cn[2])
{
//following code convert wchar to char
c_cn[0] = w_cn >> 8 ;
c_cn[1] = w_cn ;
c_cn[2] = '/0';
return c_cn ;
}
其中需求留意的是唯一16位的wchar_t需求用两个8位的char来存储之。咱们能够发明另外唯一疑难问题,wchar_t的高位字节因该存储在char数组的低位字节。(那里没有仔细研究了,觉得怪怪的)。
这是完成了wchar_t到char的转化,char到wchar_t的转换类似。
C++中,你要想那样:cout< string cn(c_cn);
cout<那样就能正确的打印wchar_t字符了。是否则感觉好像做了好多事,但是完成的却是很简单的事件?呵呵,其实我也有同感,但是没有办法。更简单的办法,当然是直接用API(我唯一是懒的去找了,二唯一自个动手转换有些物品看的更清楚咯),但是那样的转换更灵活,在实际中因该会用到的。
有了以上的基本,下面给出wchar_t字符串到char字符串的转换代码Code:
char *W2C(const wchar_t *pw , char *pc)
{
//cout<<*pw< *pc++ = *pw >> 8 ;
*pc = *pw ;
return 0 ;
}
char *wstr2cstr(const wchar_t *pwstr , char *pcstr, size_t len)
{
char *ptemp = pcstr ;
if(pwstr!=NULL && pcstr!=NULL)
{
size_t wstr_len = wcslen(pwstr) ;
len = (len > wstr_len ) ? wstr_len : len ;
while( len -- > 0)
{
W2C(pwstr , pcstr);
pwstr++ ;
pcstr +=2 ; //和咱们开端说的相同+2,否则+1
}
*pcstr = '/0';
return ptemp ;
}
return 0 ;
}
上面就代码Code,测试:
int main(int arg , char *argv[])
{
wchar_t pwstr[] = {'我' , '是' , '中' , '国' , '人'};
char *pcstr = (char *)new char[2 * wcslen(pwstr)+1] ;
memset(pcstr , 0 , 2 * wcslen(pwstr)+1 );
wstr2cstr(pwstr , pcstr , wcslen(pwstr)) ;
str.assign (pcstr);
cout< delete []pcstr ;
}
wchar_t
wchar_t是C/C++的字符数据类型,char是8位字符类型,最多只能包含256种字符,许多外文字符集所含的字符数目超过256个,char型无法表示。
wchar_t数据类型一般为16位或32位,但不同的C或C++库有不同的规定,如GNU Libc规定wchar_t为32位
[1]
,总之,wchar_t所能表示的字符数远超char型。
标准C++中的wprintf()函数以及iostream类库中的类和对象能提供wchar_t
宽字符类型的相关操作。
例如:
#include <iostream>
using namespace std;
void main()
{
locale loc( "chs" );//定义“区域设置”为中文方式
wcout.imbue( loc );//载入中文字符输入方式
wchar_t str[]=L"中国";//定义宽字符数组,注意L是大写
wcout<<str<<endl;//显示宽字符数组,下同
wprintf(str);
system("pause");
存放管理工具的框架,例如 Microsoft 管理控制台 (
MMC)。控制台是由控制台树中的项定义的,可能包括文件夹和其他容器、**网页和其他管理项。控制台带有窗口,这些窗口能提供控制台树视图和由控制台树中的项引发的管理属性、服务及事件的视图。
产品概念:
面对越来越多的智能化管理,而众多的仪器设备、错综复杂的线路已挤满了整个工作室,使管理人员无法工作。控制台是一种专为监控室内摆放设备及理清线路的机壳设备。
一.控制台又名:操作台、工作台、监控台、监控工作台、监控操作台、平台式操作台等。
二.适用于:生活小区保安室、公安监控室、道路监控室、大厦监控室、街道监控室、学校监控室、旅游景区监控室、工厂监控室等。
三.可放置设备:显示器(台式、液晶)、电脑主机(立、卧式)、键盘、手摇操作键盘、画面分割器、19″其它设备、报警盒、对讲主机等。显示器通常为17″。
}
控制台
[
编辑本段]
概述
存放管理工具的框架,例如 Microsoft 管理控制台 (
MMC)。控制台是由控制台树中的项定义的,可能包括文件夹和其他容器、**网页和其他管理项。控制台带有窗口,这些窗口能提供控制台树视图和由控制台树中的项引发的管理属性、服务及事件的视图。
[
编辑本段]
控制台概念
产品概念:
[
编辑本段]
特点
1.控制台是一种特殊的产品
可以根据客户的使用需求而订制。它可以单联使用,也可以是多联组合使用。可以单层(每个显示器为一层,两个显示器叠垒为两层)使用,也可以多层使用;2.它一般以联或位为单位
通常(单层)每联或每位常规尺寸为1150(高)*565(宽)*1000(深)毫米(平台式高度为750毫米)。此尺寸内部为19″标准柜体,可放置19″以下任意设备;3.设计原理
整个柜体采用的1.2毫米~2.0毫米SPCC钢板经裁剪、冲压、折弯、铆接、焊接、打磨、校形、除油、除锈、磷化、静电喷涂、高温固化、冷却等制作而成。产品可分为组装式和焊接式两种。组装式加工难度高但运输成本低,焊接式加工难度低但运输成本高。①台面高度为700毫米,深底为350毫米。适合操作员在坐姿操作时双腿能伸入台面下部且不会因为碰到柜体而伤到腿;②台面配有推拉式键盘抽屉,预留有鼠标线孔。有利于操作台面的井然有序;③每联柜体后上部配有交流散热风扇一套(风扇、风扇罩、1米电源线,已组装好),后门(可锁)预留有散热通风孔。有利于柜体内部产生循环风而达到散热功能,后门便于检修柜体内的设备;④柜体下部(底板后部与下部)预留有进出线孔位便于走线;⑤柜体下部配有可调节层板一件,转动前门(可锁)。层板便于放置卧式主机或其它设备,前门便于打开操作设备;⑥整个柜体为一把钥匙打开;⑦柜体上部(平台式除外)首层为倾斜面,与台面夹角为105度,从第二层起与台面夹角为90度。有利于操作员在长时间目视画面时眼睛不疲劳;⑧柜体上部(平台式除外)配有可调节显示器层板一件,可拆卸活动前面板一件。前面板有利于更换显示器时不用更换柜体而只更换面板;⑨台面与柜体为组合式(平台式除外)更有利于运输;⑩颜色任意搭配(通常为电脑灰),使整个柜体实用美观。控制台应用程序与Windows应用程序