有人能告诉我把NSString*转换成ANTLR3字符串(在C中使用)的正确方法是什么吗?
char buf[255]; if ( YES == [myNSString getCString:buf maxLength:255 encoding:NSStringEncodingConversionAllowLossy] ) { pANTLR3_UINT8 theExpression = (pANTLR3_UINT8*)buf; ...
假设您希望完整的字符串不丢失,可以使用以下代码:
NSString *myString = ...; NSUInteger len = [myString lengthOfBytesUsingEncoding:NSUTF8StringEncoding]; char *buf = malloc(len + 1); if ([myString getCString:buf maxLength:(len + 1) encoding:NSUTF8StringEncoding]) { // pANTLR3_UINT8 is equivalent to ANTLR3_UINT8* pANTLR3_UINT8 theExpression = (pANTLR3_UINT8) buf; } free(buf);
当然,如果字符丢失不重要,可以使用其他编码。