宽字符wchar_t 与 窄字符char 先说下窄字符char,这个大部分读者应该很清楚,char类型的变量占一个字节(byte)(也就是8个bit(比特)),能表示256个字符,那char的范围有两种 第一种(signed char):-128~127 第二种(unsigned char):0~255 (对char的范围感兴趣的读者可以看一下这篇文章:浅谈char类型范围) 但C标准并没有规定char 应该是unsigned还是signed,C标准定义了三种类型:char.signed cha…
了解 长度 宽字符wchar_t的长度16位,可以用来显示中文等除英文外的其他文字, 窄字符    char   的长度  8 位,只能处理英文. 哪里可以见到 在VS2010, 2012, 2013集成环境下面创建win32控制台工程后可以看到一个叫做 _tmain的主函数,其参数— int argc, _TCHAR* argv[],查看定义_TCHAR的定义就是wchar_t. 另外关于_tmain与main的区别,请看_tmain()和main()区别—lucyjiayou 转换函数 头文…
转自:http://blog.csdn.net/nodeathphoenix/article/details/7416725 1.    首先,说下窄字符char了,大家都很清楚,就是8bit表示的byte,长度固定.char字符只能表示ASII码表中的256个字符,包括前128个可见字符和后面的128个不可见字符. 而wchar_t则是因为char所能表示的字符数太少(256个)而应运而生的,它的长度可以8bit,16bit,32bit,长度是与不同平台上的c库相关的.其实这个长度是根据指定平…
//GBK转UTF8 string CAppString::GBKToUTF8(const string & strGBK) { string strOutUTF8 = ""; WCHAR * str1; int n = MultiByteToWideChar(CP_ACP, 0, strGBK.c_str(), -1, NULL, 0); str1 = new WCHAR[n]; MultiByteToWideChar(CP_ACP, 0, strGBK.c_str(), -…
C语言小程序——推箱子(窄字符Version) 推箱子.c #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <Windows.h> #include "Game.h" #define N 100 /* 二维数组最大100*100 */ #define NTAB 24 /* 调整界面位置 */ #define YES 1 /* 可以移动 */ #defin…
1.volatile: 要求参数修改每次都从内存中的读取.这种情况要比普通运行的变量需要的时间长. 当设置了成按照C99标准运行之后,使用volatile变量之后的程序运行的时间将比register的长. 因为volatile是强制程序中内存中读取数据,所以可以通过修改内存中的这个参数来不断改变传入到cpu里的这个值. 2.可变参数 再如,字符串类型的可变参数 当程序运行之后,会出现计算器,笔记本,打印出已经开启的线程. 3.void *memset(void *s,int ch,size_t…
2012-03-25 14:54 (分类:计算机程序) 2.2 宽字符和C 宽字符不一定是Unicode.Unicode是宽字符集的一种.然而,因为本书的焦点是Windows而不是C执行的理论,所以书中把宽字符和Unicode作为同义语. 2.2.1 char数据类型 (1)下面的语句定义并初始化了一个只包含一个字符的变量: char c = 'A' ; 变量c需要1个字节来保存,并将用十六进位数0x41初始化,这是字母A的ASCII代码. (2)可以这样定义一个指向字串的指针: char *…
有一道经典的面试题: 统计 welcome to china中每个字符出现的次数,不考虑大小写.      第一个出现在脑海里的想法是: 1. 将字字符串转换成 char数组: 2. 用 for循环遍历每个字符,根据switch-case语句来逐一判断. 3. 再建立一个 int 数组来接收判断后的结果,最后 for 循环输出. 这样做的话,就要写很多个case语句来判断每个字符出现的情况.假如题目改变一下,这个字符串由用户输入,而不是固定的,那么要写的case语句会更多,恐怕整张试卷都写不下了…
vc++2005以后,Visual studio 编译器默认的字符集为Unicode.VC中很多字符处理默认为宽字符wchar_t,如CString的getBuffer(),而一些具体操作函数的输入却仍要求是单字符的char,这边需要对两者进行转换.查阅网上若干多资料,总结为一下几种方法. 方法一:WideCharToMultiByte()和 MultiByteToWideChar() 1.1 wchar_t   转为  char 使用函数 WideCharToMultiByte(),此函数把宽…
Unicode与ANSI字符串转换 我们使用windows函数MultiByteToWideChar将多字节字符串转换为宽字符字符串,如下: int MultiByteToWideChar( UINT uCodePage, DWORD dwFlags, PCSTR pMultiByteStr, int cbMultiByte, PWSTR pWideCharStr, int cchWideChar); uCodePage参数标识了与多字节字符串关联的一个代码页值.dwFlags参数允许我们进行额…