�������� Linux Tags
2. Unicode���
�򵥵�˵��Unicode��չ��ASCII��Ԫ�������ϸ��ASCII�У�ÿ����Ԫ��7λԪ��ʾ�����ߵ������ձ�ʹ�õ�ÿ��Ԫ��8λԪ������Unicodeʹ��ȫ16λԪ��Ԫ������ʹ��Unicode�ܹ���ʾ���������е���д�����п�����춵���ͨѶ����Ԫ���������ֺ��������š�Unicode���������ΪASCII�IJ��䣬���ܵĻ������ս������������ǵ�ASCII�ǵ��������֧���λ�ı�׼���������ȷ��һ���ܸߵ�Ŀ�ꡣ
UnicodeӰ�쵽�˵��Թ�ҵ��ÿ�����֣���Ҳ�������ҵϵͳ�ͳ�ʽ������Ե�Ӱ����󡣴��ⷽ�������������Ѿ���·�ˡ�Windows NT�ӵײ�֧ԮUnicode�����ҵ��ǣ�Windows 98ֻ��С����֧ԮUnicode�������켴��ANSI������C��ʽ�������ͨ���Կ���Ԫ����֧Ԯ��֧ԮUnicode�����潫��ϸ������Щ���ݡ�
��Ȼ����Ϊ��ʽд���ߣ�����ͨ����������෱�صĹ�����������ͼ͸��ʹ�����е����г�ʽ��Unicode���������Ḻ�����京����������¶�Unicode�����۶�����������
��Ԫ����ʷ
��
��Ȼ����ȷ�����࿪ʼ������ʱ�䣬����д���д�Լ6000�����ʷ�ˡ�ʵ���ϣ�������д���������������֡�ÿ����Ԫ����Ӧ춷�������ĸ�������춴�Լ3000��ǰ����Ȼ���ǹ�ȥʹ�õĶ�����д���Զ��õúúõģ���19���͵ļ��������߻��ǿ����˸��������Samuel F. B. Morse��1838�굽1854��䷢���˵籨����ʱ����������һ�ֵ籨��ʹ�õĴ��롣��ĸ���е�ÿ����Ԫ��Ӧ�һϵ�ж̵ĺͳ������壨������ۺţ�����Ȼ���д�Сд��ĸ֮��û�����𣬵����ֺͱ����Ŷ������Լ��Ĵ��롣
Morse���벢����������ͼ���Ļ�ӡˢ������������������д���Եĵ�һ�����ӡ�1821�굽1824��֮�䣬�����Louis Braille�ܵ���ҹ���д��Ѷ�ľ���ϵͳ��������������һ�ִ��룬����ֽ��ͻ��ĵ���Ϊ����������ä���Ķ���Braille����ʵ������һ��6λԪ���룬������Ԫ��������ĸ��ϡ����õ��ֺͱ����б��롣һ�������escape�����ʾ��������Ԫ����Ӧ����Ϊ��д��һ�������shift���������������뱻����Ϊ���֡�
Telex���룬����Baudot ����һ����������ʦ�������ù���ʦ����1903�꣩�Լ�һ�ֱ���ΪCCITT #2�Ĵ��루1931�걻��׼���������ǰ�����Ԫ�����ֵ�5λԪ���롣
������׼
��
���ڵ��Ե���Ԫ���Ǵ�Hollerith��Ƭ���ųƲ��ܱ��۵�����������ˣ���չ�����ģ��ÿ�Ƭ��Herman Hollerith�������״���1890��������˿��ղ���ʹ�á�6λԪ��Ԫ��ϵͳBCDIC��Binary-Coded Decimal Interchange Code������λ����ʮ��λ�������룩Դ��Hollerith���룬��60�������չΪ8λԪEBCDIC����һֱ��IBM���������ı�׼����ûʹ���������ط���
������Ѷ������׼�루ASCII��American Standard Code for Information Interchange����ʼ�50������ڣ���������1967�ꡣ����ASCII�Ĺ����У�����Ԫ������6λԪ��7λԪ����8λԪ�������ϲ����˺ܴ�����顣�ӿɿ��ԵĹ۵�������Ӧʹ���滻��Ԫ�����ASCII������6λԪ���룬����춷��õ�Ô��Ҳ�ų���8λԪ�汾�ķ�������ʱÿλԪ�Ĵ���ռ�ɱ��Ժܰ��󣩡����������յ���Ԫ�����26��Сд��ĸ��26����д��ĸ��10�����֡�32�����š�33�����ź�һ���ո��ܹ�128����Ԫ�롣ASCII���ڼ�¼��ANSI X3.4-1986��Ԫ���������Ѷ������7λԪ�������ұ�׼�루7-Bit ASCII��7-Bit American National Standard Code for Information Interchange�������������ұ�׼Ð�ᣨAmerican National Standards Institute��������ͼ2-1����ʾ��ASCII��Ԫ����ANSI�ļ��еĸ�ʽ���ơ�
ASCII�������ŵ㡣���磬26����ĸ�����������ģ���EBCDIC�����оͲ��������ģ�����д��ĸ��Сд��ĸ��ͨ���ı�һλԪ���϶��໥ת����10����λ�Ĵ���ɴ���ֵ��������صõ�����BCDIC�����У���Ԫ��0���ı�������Ԫ��9�������棡��
������ǣ�ASCII��һ���dz��ɿ��ı�׼���ڼ��̡���Ѷ��ʾ����ϵͳӲ�塢ӡ���������嵵������ҵϵͳ��Internet�ϣ�������׼������ASCII�����ж��Ҹ���ٹ̡�
0- 1- 2- 3- 4- 5- 6- 7- -0 NUL DLE SP 0 @ P ` p -1 SOH DC1 ! 1 A Q a q -2 STX DC2 " 2 B R b r -3 ETX DC3 # 3 C S c s -4 EOT DC4 $ 4 D T d t -5 ENQ NAK % 5 E U e u -6 ACK SYN & 6 F V f v -7 BEL ETB ' 7 G W g w -8 BS CAN ( 8 H X h x -9 HT EM ) 9 I Y I y -A LF SUB * : J Z j z -B VT ESC + ; K [ k { -C FF FS , < L \ l | -D CR GS - = M ] m } -E SO RS . > N ^ n ~ -F SI US / ? O _ o DEL
ͼ2-1 ASCII��Ԫ�� |
���ʷ���
��
ASCII�����������Ǹ���д�ĵ�һ����ĸ��ASCII��һ��������������׼��������������������������Ӣ����ҵ���Ҫ������Ӣ����Ӣ�����ţ��꣩�����
Ӣ��ʹ������������������ĸ������ʹ����������ĸ������д�����У�Ӣ���еĵ���ͨ��������Ҫ�������ţ���������ţ�����ʹ��Щ��ͳ�������϶�������Ҳ�޲�����Ӣ�ﵥ�֣�����cöoperate����résumé��ƴд��û�ж�������Ҳ�ᱻ��ȫ���ܡ�
�����������ϡ��Ա����Լ������������������ң���������ʹ�ö������ź��ձ顣��Щ�������������Ϊʹ������ĸ���ʺ���Щ���Զ�����ͬ����Ҫ����Զ������ŷ���ϲ����Σ���������������ʹ��������ĸ�����ԣ�����ϣ���ϣ�������������Ͷ��ʹ��˹������ĸ��������������ߵø�Զ���ͻᷢ���й����κ��֣��ձ��ͳ���Ҳ���ú���ϵͳ��
ASCII����ʷ��ʼ�1967�꣬��������Ҫ����춿˷������������Ը��ʺ�춷�����Ӣ����������ԡ����磬1967�꣬���ʱ�׼����֯��ISO��International Standards Organization���Ƽ�һ��ASCII�ı��֣�����0x40��0x5B��0x5C��0x5D��0x7B��0x7C��0x7D��Ϊ����ʹ�ñ�������������0x5E��0x60��0x7E��Ϊ��������Ҫ���������Ԫ��Ҫ8��9��10���ռ�λ��ʱ�����������ͼ�η��š�������Ȼ����һ����ѵĹ��ʽ����������Ϊ�Ⲣ���ܱ�֤һ���ԡ�����ȴ��ʾ����������뾡�취Ϊ��ͬ������������ġ�
��չASCII
��
��С�͵��Կ����ij��ڣ����Ѿ��ϸ�ؽ�����8λԪλԪ�顣��ˣ����ʹ��һ��λԪ����������Ԫ������Ҫ128�����ӵ���Ԫ������ASCII��1981�꣬�������IBM PC�Ƴ�ʱ����Ѷ����ROM������һ���ṩ256����Ԫ����Ԫ������Ҳ��ΪIBM��׼��һ����Ҫ��ɲ��֡�
�����IBM��չ��Ԫ������ijЩ����������Ԫ��һ��Сдϣ����ĸ��������ѧ�����зdz����ã���������һЩ���ͺ���״ͼ����Ԫ�����ӵ���ԪҲ�����ӵ�ASCII������Ԫ�ı���λ�ã�������Ϊ�����������Ԫ������������ʾ�õġ�
��IBM��չ��Ԫ�����ս�������ʾ����ӡ������ROM�У���������Ӧ�ó�ʽ�������������ģʽ����ʾ��ʽ������������Ԫ����û��Ϊ����ʹ��������ĸ������ŷ�����ṩ�㹻��Ĵ�������Ԫ������Ҳ�������Windows��Windows����Ҫͼ����Ԫ����Ϊ����һ����ȫͼ�λ���ϵͳ��
��Windows 1.0��1985��11�·��У��У�Microsoftû����ȫ����IBM��չ��Ԫ�����������˾ӵڶ���Ҫλ�á���Ϊ��Ñ��ANSI�ݰ���ISO��׼����Windows��Ԫ����������ANSI��Ԫ������ ANSI�ݰ���ISO��׼���ճ�ΪANSI/ISO 8859-1-1987������American National Standard for Information Processing-8-Bit Single-Byte Coded Graphic Character Sets-Part 1: Latin Alphabet No 1����ͨ��Ҳ��дΪ��Latin 1����
��Windows 1.0�ġ�Programmer's Reference����ӡ����ANSI��Ԫ��������汾����ͼ2-2��ʾ��
0- 1- 2- 3- 4- 5- 6- 7- 8- 9- A- B- C- D- E- F-
-0 * * 0 @ P ` p * * ° À Ð à ð
-1 * * ! 1 A Q a q * * ¡ ± Á Ñ á ñ
-2 * * " 2 B R b r * * ¢ ² Â ò â ò
-3 * * # 3 C S c s * * £ ³ Ã ó ã ó
-4 * * $ 4 D T d t * * ¤ ´ Ä ô ä ô
-5 * * % 5 E U e u * * ¥ µ Å õ å õ
-6 * * & 6 F V f v * * ¦ ¶ Æ ö æ ö
-7 * * ' 7 G W g w * * § · Ç * ç *
-8 * * ( 8 H * h * * * ¨ ¸ È ø è ø
-9 * * ) 9 I Y I y * * © ¹ É Ù é ù
-A * * * : J Z j z * * ª º Ê Ú ê ú
-B * * + ; K [ k { * * « » Ë Û ë û
-C * * , < L \ l | * * ¬ ¼ Ì Ü ì ü
-D * * - = M ] m } * * ½ Í Ý í ý
-E * * . > N ^ n ~ * * ® ¾ Î Þ î þ
-F * * / ? * _ o DEL * * ¯ ¿ Ï ß ï ÿ
* - not applicable
ͼ2-2 Windows ANSI��Ԫ�������ANSI/ISO 8859-1�� |
�շ����ʾ��λ��δ������Ԫ������ANSI/ISO 8859-1�����ն���һ�¡�ANSI/ISO 8859-1����ʾ��ͼ����Ԫ����û�п�����Ԫ�����û�ж���DEL�����⣬����0xA0����Ϊһ���ǶϿ��Ŀո�����ζ���ڱ��Ÿ�ʽʱ������Ԫ����춶Ͽ�һ�У�������0xAD��һ��������Ԫ����ʾ��������β�Ͽ�����ʱʹ�ã�������ʾ�������⣬ANSI/ISO 8859-1������0xD7����Ϊ�˺ţ�*����0xF7Ϊ���ţ�/����Windows�е�ijЩ����Ҳ�����˴�0x80��0x9F��ijЩ��Ԫ������Щ����ANSI/ISO 8859-1��׼��һ���֡�
MS-DOS 3.3��1987��4�·��У���IBM PC�û��������������code page���ĸ��WindowsҲʹ�ô˸���������������Ԫ��ӳ����롣�����IBM��Ԫ�������������437�����ߡ�MS-DOS Latin US���������850���ǡ�MS-DOS Latin 1�������ø��ӵĴ�������ĸ���� ���� ͼ2-2��ʾ��Latin 1 ISO/ANSI��׼��������һЩ������Ԫ��������������������Զ��塣��͵�128������������ͬ�ģ��ϸߵ�128������ȡ��춶�������������ԡ�
��MS-DOS�У�����û�ΪPC�ļ��̡���ʾ����ӡ����ָ����һ���������Ȼ����PC�ϴ������à¼ï¿½ï¿½ï¿½ï¿½Ó¡ï¿½Ä¼ï¿½ï¿½ï¿½Ò»ï¿½Ð¶ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½Ã¿ï¿½ï¿½ï¿½Â¶ï¿½ï¿½á±£ï¿½ï¿½Ò»ï¿½Â¡ï¿½È»ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½Ã»ï¿½ï¿½ï¿½Í¼ï¿½ï¿½Ê¹ï¿½Ã²ï¿½Í¬ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½Ã»ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½Ú»ï¿½ï¿½ï¿½ï¿½Ï¸Ä±ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½Í»ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½â¡£ï¿½ï¿½Ôªï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½Ôªï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½Ó¦ï¿½Ã³ï¿½Ê½ï¿½Ü¹ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½Ñ¶ï¿½ï¿½ï¿½Ä¼ï¿½Ò»ï¿½ð±£´ï¿½ï¿½ï¿½ï¿½ï¿½Í¼ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½Ä²ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½Ã²ï¿½ï¿½Ô°ï¿½ï¿½ï¿½ï¿½ï¿½Ä³Ð©ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½×ªï¿½ï¿½ï¿½Ä¹ï¿½ï¿½ï¿½ï¿½ï¿½
��Ȼ�����������ṩ�˲�����������������ĸ�ĸ���������Ԫ����������������Ľϸߵ�128����Ԫ���ǰ����������ķ�������ĸ������ϣ�����ϣ�����˹�������Ȼ����˶����ᵼ���������û��ң������������������ĸδ��ȷ��ʾ����ô�������ֱ����Ҳ����������Ķ���
���������չ���ǻ��������ЩÔ�ò£¬µï¿½ï¿½Ç»ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½Ë¹ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½MS-DOS�����855��˹�������Windows�����1251�Լ�˹�������Macintosh�����10007��ͬ��ÿ�������µ���������ǶԸû��������ı�׼��Ԫ��������IBM OS/2Ҳ֧Ԯ����EBCDIC�������
����һ�£���ᷢ�������ø���⡣
˫λԪ����Ԫ��
��
����Ϊֹ�������Ѿ�������256����Ԫ����Ԫ�������й����ձ��ͺ������������ַ����д�Լ21,000�������������Щ���Զ��Ա��ֺ�ASCII��ij���������أ�
���������������˵����ȷ�Ļ�����˫λԪ����Ԫ����DBCS��double-byte character set����DBCS��256���뿪ʼ������ASCIIһ�������κ���Ϊ���õ������һ���������128��������ASCII��Ȼ�����ϸߵ�128�������е�ijЩ���Ǹ������ڶ���λԪ�顣������λԪ��һ�𣨳�����λԪ��͸���λԪ�飩����һ����Ԫ��ͨ����һ�����ӵ��������֡�
��Ȼ���ġ����ĺͺ��Ĺ���һЩ��ͬ���������֣�����Ȼ�����������Dz�ͬ�ģ����Ҿ�����ͬһ���������������ֲ�ͬ�������д���������ͬ���¡�Windows֧Ԯ�ĸ���ͬ��˫λԪ����Ԫ���������932�����ģ���936���������ģ���949�������950�����庺�֣���ֻ��Ϊ��Щ���ң�������������Windows�汾��֧ԮDBCS��
˫��Ԫ�����Ⲣ����˵��Ԫ������λԪ��������������һЩ��Ԫ���ر���ASCII��Ԫ����1��λԪ���ʾ��������𸽼ӵij�ʽ������⡣���磬�ִ��е���Ԫ���������ִ���λԪ�������������������ִ��������䳤�ȣ����ұ�����ÿ��λԪ����ȷ�����Ƿ�Ϊ˫λԪ����Ԫ����λԪ�顣�����һ��ָ��DBCS�ִ��м��ָ�꣬��ô���ִ�ǰһ����Ԫ��λַ��ʲô�أ����õĽ�������Ǵӿ�ʼ��ָ��������ִ���
Unicode�������
��
�������ٵĻ��������������ϵ���д���Բ��ܼ򵥵���256��8λԪ�����ʾ����ǰ�Ľ�����������������DBCS�ѱ�֤���Dz���������Ҫ�ģ�����Ҳ�DZ�׾�ġ���ʲô���������Ľ�������أ�
��Ϊ��ʽд���ߣ����Ǿ������������⡣�������̫�࣬��8λԪ��ֵ�Ѿ����ܱ�ʾ����ô���Ǿ��Ը�����ֵ������16λԪֵ�����������Ȥ�ģ�����Unicode���ƶ���Ô������ҵ�256����Ԫ����ӳ�䣬�Լ�����һЩ1λԪ������һЩ2λԪ������˫λԪ����Ԫ����ͬ��Unicode��ͳһ��16λԪϵͳ��������������ʾ65,536����Ԫ����Ա�ʾ������Ԫ��������ʹ���������ֵ����ԣ�����һϵ�е���ѧ�����źͻ��ҵ�λ���ŵļ�����˵�dz�ԣ�ġ�
����Unicode��DBCS֮����������Ҫ��Unicodeʹ�ã��ر���C��ʽ������Ի����������Ԫ��������Unicode�е�ÿ����Ԫ����16λԪ��������8λԪ��������Unicode�У�û�е���ʹ��8λԪ��ֵ��������ڡ����֮�£���˫λԪ����Ԫ����������Ȼ����8λԪ��ֵ����ЩλԪ������������Ԫ����ijЩλԪ������ʾ��Ҫ����һ��λԪ�鹲ͬ����һ����Ԫ��
����DBCS�ִ��dz����ң����Ǵ���Unicode��������������������֡���Ҳ������˵�֪��ǰ128��Unicode��Ԫ��16λԪ�����0x0000��0x007F������ASCII��Ԫ������������128��Unicode��Ԫ�������0x0080��0x00FF����ISO 8859-1��ASCII����չ��Unicode�в�ͬ���ֵ���Ԫ��ͬ��������еı�׼������Ϊ�˱��ת����ϣ����ĸ��ʹ�ô�0x0370��0x03FF�Ĵ��룬˹������ʹ�ô�0x0400��0x04FF�Ĵ��룬����ʹ�ô�0x0530��0x058F�Ĵ��룬ϣ������ʹ�ô�0x0590��0x05FF�Ĵ��롣�й����ձ��ͺ������������֣��ܳ�ΪCJK��ռ���˴�0x3000��0x9FFF�Ĵ��롣
Unicode�����ô�������ֻ��һ����Ԫ����û��һ�㺬����Unicodeʵ�����Ǹ��˵�����ҵ�м���ÿ����Ҫ��˾��ͬ�����Ľ������������ISO 10646-1��׼�еĴ�����һһ��Ӧ�ġ�Unicode����Ҫ�ο������ǡ�The Unicode Standard��Version 2.0����Addison-Wesley�����磬1996�꣩������һ���ر���飬���������ļ����еķ�ʽ��ʾ����������д���Եķḻ�ԺͶ����ԡ����⣬���黹�ṩ�˿���Unicode�Ļ���Ô����ϸ�ڡ�
Unicode��ȱ���𣿵�Ȼ�С�Unicode�ִ�ռ�õļ�������ASCII�ִ�����������Ȼ��ѹ����������춼���ؼ��ٵ�����ռ�Ĵŵ��ռ䡣����Ҳ�������ȱ���ǣ����������˵����ϰ��ʹ��Unicode����Ϊ��ʽд���ߣ���������ǵĹ�����
����Ԫ��C
��
��C��ʽд������˵��16λԪ��Ԫ���뷨��ȷ����ɨ�ˡ�һ��char��һ��λԪ��ͬ�������ȷ��������֮һ��û������ʽд�������ANSI/ISO 9899-1990�����ǡ��������ұ�׼��ʽ������ԣ�C����Ҳ������ANSI C����ͨ��һ������������Ԫ���ĸ�����֧Ԯ�ö��λԪ�����һ��Ԫ����Ԫ������Щ����Ԫ�볣�õ���Ԫ�����ع��档
ANSI CҲ֧Ԯ��λԪ����Ԫ�����������ġ����ĺͺ��İ汾Windows֧Ԯ����Ԫ����Ȼ������Щ��λԪ����Ԫ�������ɵ�λԪ�鹹�ɵ��ִ�������ֻ��������һЩ��Ԫ�ı���������Ԫ�ĺ�����ѡ���λԪ����Ԫ����ҪӰ��C���Գ�ʽִ��ʱ�ڳ�ʽ�⺯ʽ�����֮�£�����Ԫ��������Ԫ�������һ�����һЩ�������⡣
����Ԫ����Ҫ��Unicode��Unicode��һ�ֿ��ܵĿ���Ԫ����Ȼ������Ϊ����Ľ�����Windows������Cִ�е����ۣ������ҽ��ѿ���Ԫ��Unicode��Ϊͬ���
char������̬
��
�ٶ����Ƕ��dz���Ϥ��C��ʽ��ʹ��char������̬������ʹ�����Ԫ���ִ�����Ϊ�˱������C��δ�������Ԫ���������Ȼع�һ�¿�����Win32��ʽ�г��ֵı�׼��Ԫ���塣
�������䶨�岢��ʼ����һ��ֻ����һ����Ԫ�ı�����
char c = 'A' ;
����c��Ҫ1��λԪ�������棬������ʮ����λ��0x41��ʼ����������ĸA��ASCII���롣
����������������һ��ָ���ִ���ָ�꣺
char * p ;
��ΪWindows��һ��32λԪ��ҵϵͳ������ָ�����p��Ҫ��4��λԪ�鱣�档�����ɳ�ʼ��һ��ָ���ִ���ָ�꣺
char * p = "Hello!" ;
��ǰ��һ��������pҲ��Ҫ��4��λԪ�鱣�档���ִ������ھ�̬�������в�ռ��7��λԪ�é£6��λԪ�鱣���ִ�����1��λԪ�鱣����ֹ����0��
��������������������Ԫ���У�
char a[10] ;
����������£�������Ϊ�����б�����10��λԪ��Ĵ���ռ䡣����ʽsizeof��a�� ������10���������������������������к�ʽ�ⶨ�壩������ʹ����������������ʼ��һ����Ԫ���У�
char a[] = "Hello!" ;
������������ж���Ϊһ����ʽ���������������뽫������Ϊһ��static���������£�
static char a[] = "Hello!" ;
��������������ִ��������ھ�̬��ʽ�������У�����ĩβ����0����������Ҫ7��λԪ��Ĵ���ռ䡣
����Ԫ
��
Unicode���߿���Ԫ��û�иı�char������̬��C�еĺ��塣char������ʾ1��λԪ��Ĵ���ռ䣬 sizeof ��char�� ��������1�������ϣ�C��1��λԪ��ɱ�8λԪ�����������Ǵ��������˵��1��λԪ�飨Ҳ����1��char����8λԪ����
C�еĿ���Ԫ���wchar_t������̬�����ڼ�����ͷ��������WCHAR.H�ж��ж��壬��������
typedef unsigned short wchar_t ;
��ˣ�wchar_t������̬���޷��Ŷ�������̬��ͬ������16λԪ����
Ҫ�������һ������Ԫ�ı�������ʹ���������䣺
wchar_t c = 'A' ;
����c��һ��˫λԪ��ֵ0x0041����Unicode��ʾ����ĸA����Ȼ������ΪIntel΢����������С��λԪ�鿪ʼ�����λԪ����ֵ����λԪ��ʵ��������0x41��0x00��˳�򱣴��ڼ������С�������Unicode���ֵĵ��Դ���Ӧע����һ�㡣��
�����ɶ���ָ����ִ���ָ�꣺
wchar_t * p = L"Hello!" ;
ע������ڵ�һ������ǰ��Ĵ�д��ĸL��������long�������⽫���߱��������ִ�������Ԫ���æ£ï¿½ï¿½Ã¿ï¿½ï¿½ï¿½ï¿½ÔªÕ¼ï¿½ï¿½2��λԪ�顣ͨ����ָ�����pҪռ��4��λԪ�飬���ִ�������Ҫ14��λԪ�é£Ã¿ï¿½ï¿½ï¿½ï¿½Ôªï¿½ï¿½Òª2��λԪ�飬ĩβ��0����Ҫ2��λԪ�顣
ͬ���������������������䶨�����Ԫ���У�
static wchar_t a[] = L"Hello!" ;
���ִ�Ҳ��Ҫ14��λԪ��Ĵ���ռ䣬sizeof (a) ������14����������a�ɵõ���������Ԫ��a[1] ��ֵ�ǿ���Ԫ��e��������0x0065��
��Ȼ����ȥ����һ��ӡˢ���ţ�����һ������ǰ���L�dz���Ҫ����������������֮�����û�пո�ֻ�д���L����������֪������Ҫ���ִ���Ϊÿ����Ԫ2λԪ�顣���ᣬ�����ǿ���ʹ�ÿ��ִ������DZ�������ʱ��������������һ������ǰ���L�����˵��ǣ���������˰���L��C������ͨ������������������Ѷ��
�������ڵ�����Ԫ����ǰ��ʹ��L���ף�����ʾ����Ӧ����Ϊ����Ԫ��������ʾ��
wchar_t c = L'A' ;
��ͨ�����Dz���Ҫ�ģ�C��������Ը���Ԫ�������䣬ʹ����Ϊ����Ԫ��
����Ԫ��ʽ�⺯ʽ
��
���Ƕ�֪����λ���ִ��ij��ȡ����磬��������Ѿ�����������������һ���ִ�ָ�꣺
char * pc = "Hello!" ;
���ǿ��Ժ���
iLength = strlen (pc) ;
��ʱ����iLength�����6��Ҳ�����ִ��е���Ԫ����
̫���ˣ�������������������һ��ָ�����Ԫ��ָ�꣺
wchar_t * pw = L"Hello!" ;
�ٴκ���strlen ��
iLength = strlen (pw) ;
�����鷳���ˡ����ȣ�C����������ʾһ��������Ϣ�����������������ݣ�
'function' : incompatible types - from 'unsigned short *' to 'const char *'
������Ϣ����˼�ǣ�����strlen��ʽʱ���ú�ʽӦ����char���͵�ָ�꣬��������ȴ������һ��unsigned short���͵�ָ�ꡣ����Ȼ�ɱ��벢ִ�иó�ʽ�������ᷢ��iLength���1��Ϊʲô��
�ִ���Hello!���е�6����Ԫռ��16λԪ��
0x0048 0x0065 0x006C 0x006C 0x006F 0x0021
Intel�������ڼ������н����Ϊ��
48 00 65 00 6C 00 6C 00 6F 00 21 00
�ٶ�strlen��ʽ����ͼ�õ�һ���ִ��ij��ȣ����ѵ�1��λԪ����Ϊ��Ԫ��ʼ�������������ٶ������һ��λԪ����0�����ʾ�ִ�������
���С��ϰ�����˵����C���Ա�����ִ��ʱ�ڳ�ʽ�⺯ʽ֮������𡣱��������ִ�L"Hello!" ����Ϊһ��16λԪ��������̬���ϣ������䱣����wchar_t�����С�����������������������sizeof�������������Щ����������������������ʱ������ִ��ʱ�ڳ�ʽ�⺯ʽ������strlen����Щ��ʽ��Ϊ�ִ��ɵ�λԪ����Ԫ��ɡ��������ִ�ʱ����ʽ�Ͳ���������ϣ������ִ���ˡ�
������Ҫ˵�����ޣ�̫�鷳�ˣ�������ÿ��C���Գ�ʽ�⺯ʽ��������д�Խ��ܿ���Ԫ������ʵ�ϲ�����ÿ��C���Գ�ʽ�⺯ʽ����Ҫ��д��ֻ����Щ���ִ������ĺ�ʽ����Ҫ��д������Ҳ������������ɡ������Ѿ���д���ˡ�
strlen��ʽ�Ŀ���Ԫ����wcslen��wide-character string length�����ִ����ȣ���������STRING.H������Ҳ˵����strlen����WCHAR.H�о���˵����strlen��ʽ˵�����£�
size_t __cdecl strlen (const char *) ;
��wcslen��ʽ��˵�����£�
size_t __cdecl wcslen (const wchar_t *) ;
��ʱ����֪����Ҫ�õ����ִ��ij��ȿ��Ժ���
iLength = wcslen (pw) ;
��ʽ�������ִ��е���Ԫ��6�����ס���ijɿ�λԪ���ᣬ�ִ�����Ԫ���Ȳ��ı䣬ֻ��λԪ�鳤�ȸı��ˡ�
����Ϥ�����д����ִ�������Cִ��ʱ�ڳ�ʽ�⺯ʽ���п���Ԫ�档���磬wprintf��printf�Ŀ���Ԫ�档��Щ��ʽ��WCHAR.H�ͺ��б�׼��ʽ˵���ı�ͷ������˵����
ά����һÔʼ��
��
��Ȼ��ʹ��UnicodeҲ��ȱ�㡣��һ��Ҳ������Ҫ��һ���ǣ���ʽ�е�ÿ���ִ�����ռ�������Ĵ���ռ䡣���⣬�������ֿ���Ԫִ��ʱ�ڳ�ʽ���еĺ�ʽ�ȳ���ĺ�ʽ�󡣳�����Ô����Ҳ���뽨�������汾�ij�ʽ��һ������ASCII�ִ�����һ������Unicode�ִ�����õĽ���취��ά�����ܰ�ASCII�������ܰ�Unicode����ĵ�һÔʼ�뵵����
��Ȼֻ��һС�γ�ʽ�������ִ��ʱ�ڳ�ʽ�⺯ʽ�в�ͬ�����ƣ���ҲҪ���岻ͬ����Ԫ���⽫�ڴ���ǰ����L���ִ�����ʱ�����鷳��
һ���취��ʹ��Microsoft Visual C++������TCHAR.H��ͷ�������ñ�ͷ��������ANSI C��׼��һ���֣�������ﶨ���ÿ����ʽ�;޼������ǰ�涼��һ�����ߡ�TCHAR.HΪ��Ҫ�ִ������ı�׼ִ��ʱ�ڳ�ʽ�⺯ʽ�ṩ��һϵ�е�������ƣ����磬_tprintf��_tcslen������ʱ��Щ����Ҳ��Ϊ��ͨ�á���ʽ���ƣ���Ϊ���Ǽȿ���ָ��ʽ��Unicode��Ҳ����ָ���Unicode�档
�����������Ϊ_UNICODE��ʶ���֣����ҳ�ʽ�а�����TCHAR.H��ͷ��������ô_tcslen�Ͷ���Ϊwcslen��
#define _tcslen wcslen
���û�ж���UNICODE����_tcslen����Ϊstrlen��
#define _tcslen strlen
�ȵȡ�TCHAR.H����һ���µ�������̬TCHAR�����������Ԫ������̬�����⡣��������� _UNICODEʶ���֣���ôTCHAR����wchar_t��
typedef wchar_t TCHAR ;
����TCHAR����char��
typedef char TCHAR ;
���ڿ�ʼ�����ִ������е�L���⡣���������_UNICODEʶ���֣���ôһ������__T�ľ޼��Ͷ������£�
#define __T(x) L##x
�����൱��ɬ���﷨�����Ϻ�ANSI C��׼��ǰ�ô������淶����һ�Ծ��ֺų�Ϊ��ճ�����ţ�token paste������������ĸL���ӵ��޼������ϡ���ˣ�����޼�������"Hello!"����L##x����L"Hello!"��
���û�ж���_UNICODEʶ���֣���__T�޼�ֻ�򵥵ض������£�
#define __T(x) x
���⣬���������޼���__T������ͬ��
#define _T��x�� __T��x�� #define _TEXT��x�� __T��x��
��Win32 console��ʽ��ʹ���ĸ��޼���ȡ�����ϲ����໹����ϸ�������أ����밴����������_T��_TEXT�޼��ڶ����ִ����֣�
_TEXT ("Hello!")
�������Ļ������������_UNICODE����ô�ô�������Ϊ����Ԫ����ϣ��������Ϊ8λԪ����Ԫ�ִ���
����Ԫ��WINDOWS
��
Windows NT�ӵײ�֧ԮUnicode�������Windows NT�ڲ�ʹ����16λԪ��Ԫ��ɵ��ִ�����Ϊ��������������ط�����ʹ��16λԪ�ִ�������Windows NT���ë¾ï¿½ï¿½ï¿½ï¿½ï¿½Ö´ï¿½ï¿½ï¿½ï¿½ï¿½ÒµÏµÍ³ï¿½ï¿½×ªï¿½ï¿½ï¿½ï¿½Windows NT��ִ��ΪASCII��Unicode����ASCII��Unicode��ϱ�д�ij�ʽ������Windows NT֧Ԯ��ͬ��API��ʽ���У���Щ��ʽ����8λԪ��16λԪ���ִ������ǽ����Ͽ���������ζ����ġ���
����Windows NT��Windows 98��Unicode��֧ԮҪ�ٵöࡣֻ�к��ٵ�Windows 98��ʽ����֧Ԯ���ִ�����Щ��ʽ���ڡ�Microsoft Knowledge Base article Q125671���У����ǰ���MessageBox�������Ҫ���еij�ʽ��ֻ��һ��.EXE����Ҫ����Windows NT��Windows 98�¶���ִ�У���ô�Ͳ�Ӧ��ʹ��Unicode������Ͳ�����Windows 98��ִ�У������ʽ���ܺ���Unicode���Windows��ʽ����������������Unicode��ij�ʽʱ�ᴦ춸�������λ�ã���Ӧ������д��ΪASCII��ΪUnicode�����Ôʼ�롣����DZ��������г�ʽ�ı�д��ʽ��
Windows��ͷ��������
��
�������ڵ�һ����������������һ��Windows��ʽ������ͷ����WINDOWS.H���õ�����������������ͷ����������WINDEF.H���õ�������������Windows��ʹ�õĻ�����̬���壬����������Ҳ����WINNT.H��WINNT.H����������Unicode֧Ԯ��
WINNT.H��ǰ�����C�ı�ͷ����CTYPE.H������C���ڶ��ͷ����֮һ������wchar_t�Ķ��塣WINNT.H�������µ�������̬������CHAR��WCHAR��
typedef char CHAR ; typedef wchar_t WCHAR ; // wc
������Ҫ����8λԪ��Ԫ����16λԪ��Ԫʱ���Ƽ�����Windows��ʽ��ʹ�õ�������̬��CHAR��WCHAR��WCHAR���������ע������������Ƿ��Ľ��飺һ�����WCHAR������̬�ı�������ǰ�渽������ĸwc��˵��һ������Ԫ��
WINNT.H��ͷ�������������˿�����8λԪ�ִ�ָ�������������̬���ĸ�������const 8λԪ�ִ�ָ���������̬�����ᆱѡ�˱�ͷ������һЩʵ�õ�˵��������̬��䣺
typedef CHAR * PCHAR, * LPCH, * PCH, * NPSTR, * LPSTR, * PSTR ; typedef CONST CHAR * LPCCH, * PCCH, * LPCSTR, * PCSTR ;
����N��L��ʾ��near���͡�long����ָ����16λԪWindows�����ִ�С��ͬ��ָ�ꡣ��Win32��near��longָ��û������
���Ƶأ�WINNT.H���������ֿ���Ϊ16λԪ�ִ�ָ���������̬�����ֿ���Ϊconst 16λԪ�ִ�ָ���������̬��
typedef WCHAR * PWCHAR, * LPWCH, * PWCH, * NWPSTR, * LPWSTR, * PWSTR ; typedef CONST WCHAR * LPCWCH, * PCWCH, * LPCWSTR, * PCWSTR ;
���ˣ���������������̬CHAR��һ��8λ��char����WCHAR��һ��16λ��wchar_t�����Լ�ָ��CHAR��WCHAR��ָ�ꡣ��TCHAR.Hһ����WINNT.H��TCHAR����Ϊһ�����Ԫ���͡����������ʶ����UNICODE��û�е��ߣ�����TCHAR��ָ��TCHAR��ָ��ͷֱ���ΪWCHAR��ָ��WCHAR��ָ�ꣻ���û�ж���ʶ����UNICODE����TCHAR��ָ��TCHAR��ָ��ͷֱ���Ϊchar��ָ��char��ָ�꣺
#ifdef UNICODE typedef WCHAR TCHAR, * PTCHAR ; typedef LPWSTR LPTCH, PTCH, PTSTR, LPTSTR ; typedef LPCWSTR LPCTSTR ; #else typedef char TCHAR, * PTCHAR ; typedef LPSTR LPTCH, PTCH, PTSTR, LPTSTR ; typedef LPCSTR LPCTSTR ; #endif
����Ѿ���ij����ͷ��������������ͷ�����ж�����TCHAR������̬����ôWINNT.H��WCHAR.H��ͷ�������ܷ�ֹ���ظ����塣���������ۺ�ʱ�ڳ�ʽ��ʹ��������ͷ����ʱ����Ӧ������������ͷ����֮ǰ����WINDOWS.H��
WINNT.H��ͷ������������һ���޼����þ޼���L���ӵ��ִ��ĵ�һ������ǰ�����������UNICODEʶ���֣���һ������ __TEXT�ľ޼��������£�
#define __TEXT(quote) L##quote
���û�ж���ʶ����UNICODE��������������__TEXT�޼���
#define __TEXT(quote) quote
���⣬ TEXT�޼����������壺
#define TEXT(quote) __TEXT(quote)
����TCHAR.H�ж���_TEXT�޼��ķ���һ����ֻ�Dz��ز��ĵ��ߡ��ҽ��ڱ�����ʹ������޼���TEXT�汾��
��Щ�����ʹ����ͬһ��ʽ�л��ʹ��ASCII��Unicode�ִ������߱�дһ���ɱ�ASCII��Unicode����ij�ʽ�������ϣ����ȷ����8λԪ��Ԫ�������ִ�����ʹ��CHAR��PCHAR���������������Լ������ŵ��ִ���Ϊ��ȷ��ʹ��16λԪ��Ԫ�������ִ�����ʹ��WCHAR��PWCHAR������L���ӵ�����ǰ�档�����8λ����16λȡ���UNICODEʶ���ֵĶ���ı������ִ���Ҫʹ��TCHAR��PTCHAR��TEXT�޼���
Windows��ʽ����
��
��Windows 1.0��Windows 3.1��16λԪWindows�У�MessageBox��ʽλ춶�̬�����ʽ��USER.EXE����Windows 3.1���忪���׼���WINDOWS.H�У�MessageBox��ʽ�������£�
int WINAPI MessageBox (HWND, LPCSTR, LPCSTR, UINT) ;
ע�⣬��ʽ�ĵڶ�����������������ָ�����ִ���ָ�ꡣ����������һ��Win16��ʽʱ��Windows��������MessageBox���С���ʽ.EXE�����еı�������Windows���ó�ʽ�ĺ�����USER�е�MessageBox��ʽ��̬����������
32λ��Windows�������а汾��Windows NT���Լ�Windows 95��Windows 98�����˺�����16λ���ݵ�USER.EXE���⣬������һ����ΪUSER32.DLL�Ķ�̬�����ʽ�⣬�ö�̬�����ʽ�⺬��32λԪʹ���߽��溯ʽ�Ľ���㣬����32λԪ��MessageBox��
�����Windows֧ԮUnicode�Ĺؼ�����USER32.DLL�У�û��32λԪMessageBox��ʽ�Ľ���㡣ʵ���ϣ�����������㣬һ����ΪMessageBoxA��ASCII�棩����һ����ΪMessageBoxW������Ԫ�棩�����ִ���������ÿ��Win32��ʽ������ҵϵͳ������������㣡���˵��ǣ���ͨ�����ع���������⣬��ʽ��ֻ��ʹ��MessageBox����TCHAR��ͷ����һ����ÿ��Windows��ͷ��������������Ҫ�ļ��ɡ�
������MessageBoxA��WINUSER.H�ж���ķ���������MessageBox���ڵĶ�������ƣ�
WINUSERAPI int WINAPI MessageBoxA ( HWND hWnd, LPCSTR lpText, LPCSTR lpCaption, UINT uType) ;
������MessageBoxW��
WINUSERAPI int WINAPI MessageBoxW (HWND hWnd, LPCWSTR lpText, LPCWSTR lpCaption, UINT uType) ;
ע�⣬MessageBoxW��ʽ�ĵڶ����͵�����������ָ�����Ԫ��ָ�ꡣ
�����Ҫͬʱʹ�ò��ֱ�ƥ��ASCII�Ϳ���Ԫ��ʽ���У���ô������Windows��ʽ����ȷ��ʹ��MessageBoxA��MessageBoxW��ʽ�����������ʽд���߽�����ʹ��MessageBox�������Ƿ�����UNICODE��MessageBox����MessageBoxA��MessageBoxWһ������WINUSER.H�������һ����ʱ����ʽ�൱���飺
#ifdef UNICODE #define MessageBox MessageBoxW #else #define MessageBox MessageBoxA #endif
���������������UNICODEʶ���֣���ô��ʽ�����е�MessageBox��ʽ����ʵ���Ͼ���MessageBoxW��ʽ�����򣬾���MessageBoxA��ʽ��
ִ�иó�ʽʱ��Windows����ʽ�в�ͬ�ĺ�ʽ�����벻ͬ��Windows��̬�����ʽ��Ľ�������ᡣ��Ȼֻ���������⣬���ǣ���Windows 98�в���ִ��Unicode���Windows��ʽ����Ȼ��Щ��ʽ�н���㣬��ͨ�����ش�����롣Ӧ�ó�ʽע����Щ���صĴ��󲢲�ȡһЩ�����Ķ�����
Windows���ִ���ʽ
��
����ǰ��̸���ģ�Microsoft C��������Ԫ����Ҫ�ִ�������C����ִ��ʱ�ڳ�ʽ�⺯ʽ��������ͨ�汾��������Windows����������һ���֡����磬������Windows�����һ���ִ���ʽ����Щ��ʽ���������ִ����ȡ������ִ��������ִ��ͱȽ��ִ���
ILength = lstrlen (pString) ; pString = lstrcpy (pString1, pString2) ; pString = lstrcpyn (pString1, pString2, iCount) ; pString = lstrcat (pString1, pString2) ; iComp = lstrcmp (pString1, pString2) ; iComp = lstrcmpi (pString1, pString2) ;
��Щ��ʽ��C��ʽ���ж�Ӧ�ĺ�ʽ������ͬ�����������UNICODEʶ���֣���ô��Щ��ʽ�����ܿ��ִ�������ֻ���ܳ����ִ������ִ����lstrlenW��ʽ����Windows 98��ִ�С�
��Windows��ʹ��printf
��
������ģʽ��������C���Գ�ʽд����ʷ�ij�ʽд���������ر�ϲ��printf��ʽ����ʹ����ʹ�ø��򵥵��������puts������printf������Kernighan��Ritchie�ġ�hello, world����ʽ��һ��Ҳ�������˾��档����֪������ǿ��ġ�hello, world�����ջ�����Ҫprintf�ĸ�ʽ����������������ô�ͷ��ʼ��ʹ������
���и�����Ϣ����Windows��ʽ�в���ʹ��printf����ȻWindows��ʽ�п���ʹ�ô����C��ִ��ʱ�ڳ�ʽ�â£Êµï¿½ï¿½ï¿½Ï£ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½Ê½Ð´ï¿½ï¿½ï¿½ß¸ï¿½Ô¸ï¿½ï¿½Ê¹ï¿½ï¿½C����������͵���I/O��ʽ������Windows�е�Ч�ĺ�ʽ��Windows�Ա�׼����ͱ�׼���û�и����Windows��ʽ�п�ʹ��fprintf��������printf��
����һ������Ϣ���Ǿ�����Ȼ����ʹ��sprintf��sprintfϵ���е�������ʽ����ʾ���֡���Щ��ʽ���˽����ݸ�ʽ���������ʽ��һ���������ṩ���ִ����������⣬�书����printfI��ͬ��Ȼ���ɶԸ��ִ����в��������罫�䴫��MessageBox����
�������δʹ�ù�sprintf ���ҵ�һ�ο�ʼдWindows��ʽʱҲû�ù��˺�ʽ����������һ����̵�ִ��ʵ�壬printf��ʽ˵�����£�
int printf (const char * szFormat, ...) ;
��һ��������һ����ʽ�ִ������������ʽ�ִ��еĴ������Ӧ�IJ�ͬ���Ͷ��������
sprintf��ʽ�������£�
int sprintf (char * szBuffer, const char * szFormat, ...) ;
��һ����������Ԫ��������������һ����ʽ�ִ���Sprintf���ǽ���ʽ�������׼��������ǽ������szBuffer���ú�ʽ���ظ��ִ��ij��ȡ�������ģʽ��ʽ����У�
printf ("The sum of %i and %i is %i", 5, 3, 5+3) ;
�Ĺ�����ͬ�
char szBuffer [100] ; sprintf (szBuffer, "The sum of %i and %i is %i", 5, 3, 5+3) ; puts (szBuffer) ;
��Windows�У�ʹ��MessageBox��ʾ������puts��
����ÿ���˶�������������ʽ�ִ��뱻��ʽ���ı�������ʱ������ʹprintfִ�д��󲢿�����ɳ�ʽ������ʹ��sprintfʱ��������Ҫ������Щ�����һ���һ���µĸ�������������ִ������������㹻���Դ�Ž����Microsoftר�ú�ʽ_snprintf�������һ���⣬�˺�ʽ��������һ����������ʾ����Ԫ����Ļ�������С��
vsprintf��sprintf��һ�����Σ���ֻ������������vsprintf���ִ���ж���������Զ���ʽ������printf��ʽ��vsprintf��ǰ����������sprintf��ͬ��һ����춱���������Ԫ��������һ����ʽ�ִ���������������ָ���ʽ���������е�ָ�ꡣʵ���ϣ���ָ��ָ���ڶѵ��й���ʽ���еı�����va_list��va_start��va_end�޼�����STDARG.H�ж��壩�������Ǵ����ѵ�ָ�ꡣ���������SCRNSIZE��ʽչʾ��ʹ����Щ�޼��ķ�����ʹ��vsprintf��ʽ��sprintf��ʽ����������д��
int sprintf (char * szBuffer, const char * szFormat, ...) { int iReturn ; va_list pArgs ; va_start (pArgs, szFormat) ; iReturn = vsprintf (szBuffer, szFormat, pArgs) ; va_end (pArgs) ; return iReturn ; }
va_start�޼���pArg����Ϊָ��һ���ѵ��������ñ���λַ�ڶѵ�����szFormat�����档
�������Windows���ڳ�ʽʹ����sprintf��vsprintf�����յ���Microsoft��Windows API���������������Ƶĺ�ʽ��Windows��wsprintf��wvsprintf��ʽ�ڹ�������sprintf��vsprintf��ͬ�������Dz��ܴ��������ʽ��
��Ȼ����������Ԫ�ķ�����sprintf���͵ĺ�ʽ�������࣬ʹ�ú�ʽ���Ʊ�ü�Ϊ���ҡ���2-1�г���Microsoft��Cִ��ʱ�ڳ�ʽ���Windows֧Ԯ������sprintf��ʽ��
��2-1 |
ASCII | ����Ԫ | ���� | |
---|---|---|---|
�����ı������� | |||
��׼�� | sprintf | swprintf | _stprintf |
��󳤶Ȱ� | _snprintf | _snwprintf | _sntprintf |
Windows�� | wsprintfA | wsprintfW | wsprintf |
�������е�ָ�� | |||
��׼�� | vsprintf | vswprintf | _vstprintf |
��󳤶Ȱ� | _vsnprintf | _vsnwprintf | _vsntprintf |
Windows�� | wvsprintfA | wvsprintfW | wvsprintf |
�ڿ���Ԫ���sprintf��ʽ�У����ִ�����������Ϊ���ִ����ڿ���Ԫ���������Щ��ʽ�У���ʽ�ִ������ǿ��ִ���������������ȷ�����ݸ���Щ��ʽ�������ִ�Ҳ�����ɿ���Ԫ��ɡ�
��ʽ��ѶϢ����
��
��ʽ2-1��ʾ��SCRNSIZE��ʽչʾ�����ʵ��MessageBoxPrintf��ʽ���ú�ʽ���������������printf�����������ǵĸ�ʽ��
��ʽ2-1 SCRNSIZE SCRNSIZE.C /*--------------------------------------------------------------------------- SCRNSIZE.C -- Displays screen size in a message box (c) Charles Petzold, 1998 ----------------------------------------------------------------------------*/ #include <windows.h> #include <tchar.h> #include <stdio.h> int CDECL MessageBoxPrintf (TCHAR * szCaption, TCHAR * szFormat, ...) { TCHAR szBuffer [1024] ; va_list pArgList ; // The va_start macro (defined in STDARG.H) is usually equivalent to: // pArgList = (char *) &szFormat + sizeof (szFormat) ; va_start (pArgList, szFormat) ; // The last argument to wvsprintf points to the arguments _vsntprintf ( szBuffer, sizeof (szBuffer) / sizeof (TCHAR), szFormat, pArgList) ; // The va_end macro just zeroes out pArgList for no good reason va_end (pArgList) ; return MessageBox (NULL, szBuffer, szCaption, 0) ; } int WINAPI WinMain ( HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) { int cxScreen, cyScreen ; cxScreen = GetSystemMetrics (SM_CXSCREEN) ; cyScreen = GetSystemMetrics (SM_CYSCREEN) ; MessageBoxPrintf ( TEXT ("ScrnSize"), TEXT ("The screen is %i pixels wide by %i pixels high."), cxScreen, cyScreen) ; return 0 ; }
���ɴ�GetSystemMetrics��ʽ�õ�����Ѷ���ó�ʽ��ͼ��Ϊ��λ��ʾ����Ѷ��ʾ�Ŀ��Ⱥ͸߶ȡ�GetSystemMetrics��һ�����������Windows�в�ͬ����ijߴ���Ѷ�ĺ�ʽ����ʵ�ϣ��ҽ��ڵ�������GetSystemMetrics��ʽ����չʾ�����һ��Windows�Ӵ�����ʾ�͹����������֡�
��������ʻ�
��
Ϊ�����г�׼����Windows��ʽ����Ҫʹ��Unicode�����ʻ������˱���ķ�Χ������Nadine Kano��д�ġ�Developing International Software for Windows 95 and Windows NT����Microsoft Press��1995�꣩һ�������������ࡣ
�����еij�ʽд��ʱ�����Ƴɼȿ�ʹ��Ҳ�ɲ�ʹ�ö����UNICODEʶ���������롣�������������Ԫ���ִ�����ʹ��TCHAR�����ִ�����ʹ��TEXT�޼����Լ�ע�ⲻҪ����λԪ�����Ԫ�����磬ע��SCRNSIZE�е� _vsntprintf���С��ڶ��������ǻ���������Ԫ��С��ͨ������ʹ��sizeof ��szBuffer������������������п���Ԫ���򷵻صIJ��ǻ���������Ԫ���ȣ����ǻ�������λԪ���С����������sizeof��TCHAR������ֿ���
ͨ������Visual C++ Developer Studio�У���ʹ�����ֲ�ͬ���趨�������ʽ��Debug��Release��Ϊ���������Ա���ķ�����ʽ�������޸���Debug�趨���Ա�춶���UNICODEʶ���֡������ʽʹ������Ҫ�ִ���������C��ʽ�⺯ʽ����ô_UNICODEʶ����Ҳ��Debug�趨�ж��壨Ҫ�˽�������������ɵģ���ӡ�Project�����ܱ���ѡ��Settings����Ȼ�ᵥ����C/C++����ǩ����ʹ�����ַ�ʽ����Щ��ʽ�Ϳ��Է���ر����±���������Թ����ԡ�
���������г�ʽ�������Ƿ�ΪUnicode���ë£ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½Windows NT��ִ�С�ֻ�м�����������⡣�����а�Unicode����ij�ʽ������Windows 98��ִ�У�����Unicode������ԡ����º͵�һ�µij�ʽ��������������MessageBoxW��Windows 98֧Ԯ����������ԪWindows��ʽ֮һ����SCRNSIZE.C�������Windows��ʽwprintf������_vsntprintf����������ɾ���ú�ʽ�ĵڶ�������������ôSCRNSIZE.C��Unicode�潫������Windows 98��ִ�У�������ΪWindows 98��֧ԮwprintfW��
�ڱ�������棨�ر��ڵ����£����ܼ��̵�ʹ��ʱ�������ǽ���������д�ܴ���Զ����Windows˫��Ԫ����Windows��ʽ����һ�����׵����顣����û��˵�����ȥ�������һ�����Ô�ò£¬±ï¿½ï¿½ï¿½ï¿½Ðµï¿½Ä³Ð©ï¿½ï¿½Unicode�汾�ij�ʽ��Զ�����Windows�²�������ִ�С���Ҳ��Unicode�Խ����ij�ʽ��������Ҫ��һ�����ɡ�Unicode������ʽ�����׵ؿ�Խ���硣