获取NSString的字符。

6

我想获取NSString的字符。像这样:

NSString *data;
const char * typein = [[data characters] UTF8String];

但是明显NSString不会响应-characters方法。我如何获取NSString的字符?

谢谢, Elijah

2个回答

21
您可以使用这个函数:
for(int i =0 ;i<[myString length]; i++) {
  char character = [myString characterAtIndex:i];
}
或者
NSString *str = @"astring";
const char *cString = [str UTF8String];

1
-[NSString cString] 已经过时很久了;你应该使用 -[NSString UTF8String] 或者 -[NSString cStringUsingEncoding:] - Wevah
我之前不知道,谢谢你。我打算修改我的回答。 - mklfarha
1
已经更正,这是更好的答案,尽管它没有解释原因。虽然-UTF8String可以用来获取缓冲区,但如果您想要完全组合的Unicode字符(其中一些可能是多字节的),则需要使用characterAtIndex: - bbum
1
@mklfarha 这个文档实际上建议不要使用characterAtIndex来循环遍历NSString。我想知道是否有更好的方法。 - pixelfreak

4
如果您只想从NSString获取cString,请调用UTF8String,就像您已经在做的那样,然后迭代数组。

2
请注意,这里获取的是包含原始字符串的缓冲区的引用。只要它是ASCII码,每个字符就会占用一个字节。如果它是Unicode编码,很可能会包含跨越多个字节的字符。 - bbum

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接