首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C++ char wchar_t, tchar兑现和标准

2013-04-21 
C++ char wchar_t, tchar实现和标准今天看c++ primer时看到,char字符部分,看的我头昏眼花的,搞不懂到底

C++ char wchar_t, tchar实现和标准
今天看<c++ primer>时看到,char字符部分,看的我头昏眼花的,搞不懂到底在说什么。一会儿char,一会儿字符码,一会儿unicode,ansii,还搞出wchar_t等东西,还说和具体实现有关,确实很混乱。我们写代码时,不都是用char吗,哪有那么多复杂的东西。

虽然看的头昏,那说明我对c++掌握的不深,只是肤浅的认识。我想问一下:

1.windows, linux, freebsd, fedora,等系统的发行者或实现者是不是都要为自己的系统编写相应的c++库文件,也即每个发行者都要根据c++标准实现c++系统,然后程序员才能够在这个系统上编写c++程序?
2.我们在windows上安装visual studio,在linux下安装g++的目的是安装编译器程序还是安装c++文件(以及c++的实现)
3. c++标准由标准委员会,那么c++实现是标准委员会写的还是谁写的?譬如,char在具体实现上是signed还是unsigned的,是由发行者微软、redhat等决定还是由标准委员会写C++实现的人决定?
4.由各种字符集,ansii,uniocde,ibm ebcdic等,那么这些编码是如何在c++程序里发挥作用的?譬如,我用cout出书一个char类型,cout使用哪个字符集?字符集是不是在库文件里有存储,然后cout去查那个字符集既可以了?

我是新手,希望大家互相学习,发现好多不懂啊。
[解决办法]
认定一件事:
unicode    ascii(多字节)
wchar_t    char
wstring    string
LPWSTR     LPSTR
LPCWSTR    LPCSTR
至于tchar,LPCTSTR,不建议使用。其实可以看做是宏,
#ifdefine _UNICODE
  #define tchar wchar_t
#else
  #define tchar char
#endif
[解决办法]

引用:
引用:认定一件事:
unicode    ascii(多字节)
wchar_t    char
wstring    string
LPWSTR     LPSTR
LPCWSTR    LPCSTR
至于tchar,LPCTSTR,不建议使用。其实可以看做是宏,
#ifdefine _UNICODE
  #……

编译器的设置里面。
vs2010为例:
属性 - 配置属性 - C/C++ - 预处理器 - 预处理器定义
里面有WIN32宏,_WINDOWS宏,_DEBUG宏等
[解决办法]
系统的头文件是操作系统写的.
C++ 的头文件是编译器写的, 它会使用操作系统的功能来提供接口给 C++ 程序.
windows 来说, 是有两套 API 的, unicode 的 API 都已 W 结尾, ascii 的都已 A 结尾, 然后通过宏来决定使用哪一套.
[解决办法]
代码中的字符集要看你工程设置中是Unicode还是MBCS,操作的函数也就分Unicode与MBCS两种,当然还有一种宏定义是整合一下两种。而且也有操作系统提供的API与其他库提供的函数。
[解决办法]
只使用 C++ 的库能实现的功能有限, 比如窗口界面不直接使用系统 API 只使用标准 C++ 的头文件的话就没法实现了.
linux 不知道, 我猜系统提供的接口是 unicode, C++ 库会自动把 ascii 转成 unicode 再进行系统调用吧.
[解决办法]
电脑内存只是一个一维二进制字节数组及其对应的二进制地址;
人脑才将电脑内存中的这个一维二进制字节数组及其对应的二进制地址的某些部分看成是整数、有符号数/无符号数、浮点数、复数、英文字母、阿拉伯数字、中文/韩文/法文……字符/字符串、函数、函数参数、堆、栈、数组、指针、数组指针、指针数组、数组的数组、指针的指针、二维数组、字符点阵、字符笔画的坐标、黑白二值图片、灰度图片、彩色图片、录音、视频、指纹信息、身份证信息……

对电脑而言没有乱码,只有二进制字节;对人脑才有乱码。啊 GBK:0xB0 0xA1,Unicode:0x4A 0x55,UTF-8:0xE5 0x95 0x8A

[解决办法]
看来楼主是初学者,还是先别理会这些吧。
将来具体做项目时再研究。

热点排行