 |
1樓
巨大八爪鱼
2015-12-11 12:48
#include <conio.h> #include <stdio.h>
void main() { char str[9] = "简体中文"; char str2[8] = {'简' >> 8, '简' & 0xff, '体' >> 8, '体' & 0xff, 'A' , 'B', 'C', '\0'}; puts(str); puts(str2); str[0] = '繁' >> 8; str[1] = '繁' & 0xff; puts(str); _getch(); }
输出: 简体中文 简体ABC 繁体中文
|
 |
2樓
巨大八爪鱼
2015-12-11 12:49
以上程序是在VS2012中编写的。 如果要在VC6中运行,那么还得加上类型强制转换,把int转换为char,例如: str[0] = (char)('繁' >> 8); str[1] = (char)('繁' & 0xff);
|
 |
3樓
巨大八爪鱼
2015-12-11 12:51
还有另一种修改char字符串中单个汉字的方法: str[2] = '體' / 0x100; str[3] = '體' % 0x100; 结果:繁體中文
|
 |
4樓
巨大八爪鱼
2015-12-11 12:53
在char字符数组中,汉字的高八位和低八位分别占一个数组元素。 取汉字高八位的方法是将汉字常量右移8位,把低八位移出去,或者除以0x100。 取低八位的方法是将汉字常量与0xff作按位与运算去掉高八位,或者直接取0x100的余数。
|
 |
5樓
巨大八爪鱼
2015-12-11 12:54
2楼所示的方法只使用位运算,不使用除法运算,所以该方法效率要高些。
|
 |
6樓
巨大八爪鱼
2015-12-11 13:00
为了方便起见,可以定义两个宏:HIGH和LOW。例如: #include <conio.h> #include <stdio.h>
#define LOW(c) (char)(c & 0xff) #define HIGH(c) (char)(c >> 8)
void main() { char str1[] = {'E', 'n', 'g' ,'l', 'i', 's', 'h', '\0'}; // 这是一个普通的字符数组 char str2[] = {HIGH('简'), LOW('简'), HIGH('体'), LOW('体'), HIGH('中'), LOW('中'), HIGH('文'), LOW('文'), '\0'}; // 这是一个含有汉字的字符数组 puts(str1); puts(str2); str1[0] = 'F'; puts(str1); str2[0] = HIGH('繁'); str2[1] = LOW('繁'); puts(str2); _getch(); }
输出: English 简体中文 Fnglish 繁体中文
|