char a = 0x54;
NSLog(@"a is %c",a);//a is T
或者 char a = 'T';
char[]字符数组
char b[3] = {'0','1','2'};
char *字符指针,用以指向C string。string类型是C++特有的,obc用NSString代替。
char *a = "abds";
NSLog(@"a is %s",a);// a is abds
NSLog(@"a[0] is %c",a[0]);//a[0] is a
NSString *string1 = @"abci";
const char *b = [string1 UTF8String];//或者const char *b = (const char *)[string1 cStringUsingEncoding:NSUTF8StringEncoding];
NSLog(@"b is %s",b);// b is abci
值得注意的是@"中文"支持中文,可以通过NSLog打印,但是上面的例子中,如果string1包含中文的话,程序就无法正常运行,因为格式限定符%s只支持ascii字符。要输出中文的话,只能NSLog(@"string1 is %@",string1);。
一个包含控制台输入输出的例子。支持输入中文。
char *char1 = NULL;
char1 = alloca(20);
scanf("%s",char1);
NSLog(@"you enter %@",[NSString stringWithUTF8String:char1]);
在iphone/mac开发中, unichar是两字节长的char,代表unicode的一个字符。但在xcode中,初始化unichar是个问题。如果像下面这样声明,会有warning "Multi-character character constant"。
unichar a = '国';//但是我们仍然可以利用 unichar pUnichar = L'你';的形态来实现赋值。
可以采用直接写文字编码的方式来初始化。
unichar a = 0x0100;
如果有很多个unichar怎么办?
unichar a[] = { 0x005A, 0x0065, 0x0062, 0x0072, 0x0061, 0x0000 };
一个个去查表太麻烦了。可以采取变通的方法:
unichar a[10];
NSString *aString = @"一二三四五六七八九十";
for (int i = 0; i < 10; i++)
a[i] = [aString characterAtIndex:i];
下面的例子和上面的循环具有类似的效果:
NSRange range=NSMakeRange(0,9);
[aString getCharacters:a range:range];
unichar *
NSString *string1 = @"二好";
const unichar *b = (const unichar *)[string1 cStringUsingEncoding:NSUnicodeStringEncoding];
NSLog(@"b is %S",b);//b is 二好
unichar[]
const unichar pUnichar[] = {L'你',L'好',0x0000};//在iOS6中,要使用const,否则会有警告;在此前的版本中,无需const
NSLog(@"c string(unichar):%S",pUnichar);// c string(unichar):你好