文档详情

C++编译器对字符串的编码转换.pdf

发布:2016-02-22约4.54千字共7页下载文档
文本预览下载声明
C++编译器对字符 串的编码转换 殷海峰 2012 年07 月20 日 变更记录 变更记录 日期 作者 说 明 2012.07.18 殷海峰 完成初稿 增加了如下内容 1、研究方法; 2012.07.20 殷海峰 2 、MinGW gcc 处理 Unicode 字符串; 3、VC++6.0 处理rc 文件里的字符串; 4 、VC++.NET 对字符串的处理 I 目 录 目 录 第1 章 说明3 1.1 前言3 1.2 MinGW gcc 3 1.2.1 ANSI字符串3 1.2.2 Unicode字符串4 1.2.3 #include 4 1.3 VC++6.0 4 1.3.1 ANSI字符串5 1.3.2 Unicode字符串5 1.3.3 资源文件5 1.4 VC++.NET 5 II 第3 章 VC++9.0 第1 章 说明 1.1 前言 本文将研究C++编译器对字符串的编码转换。如下面两行代码包含了一个 ANSI 字符串和一个Unicode 字符串(也叫Wide 字符串)。编译之后,它们具 体的编码是什么? const char* pA = 123456789 测试; //ANSI 字符串 const wchar_t* pW = L123456789 测试; //Unicode 字符串 使用UltraEdit 以二进制打开编译生成的exe 文件。找到123456789 之后就 可以查看ANSI 字符串中“测试”的编码;找到16 进制字符串 31 00 32 00 33 00 34 00 35 00 就可以查看Unicode 字符串中“测试”的编码。使用这个 方法,本文对 MinGW gcc 和 VC++ 编译器进行了研究。 1.2 MinGW gcc 在 Windows 系统下,安装 Qt Creator 2.3.1 之后,MinGW 4.4.0 就被自动 安装,其安装目录一般位于:C:\Qt\qtcreator-2.3.1\mingw 。 1.2.1 ANSI 字符串 MinGW gcc 4.4.0 编译器对ANSI 字符串的编码原则:保持其在源文件里 的原始编码,不做任何转换。 举例说明:对于Test.cpp 里的字符串测试。如果Test.cpp 的编码是ANSI 的,则测试就是ANSI 编码;如果Test.cpp 的编码是UTF-8 的,则测试就 是UTF-8 编码。编译器生成exe 的时候,仅仅在它们后面增加一个字符\0 。也 就是说同样的字符串测试,会因为Test.cpp 的编码不同而不同。同样的代码s tr
显示全部
相似文档