代码之家  ›  专栏  ›  技术社区  ›  AndersK

如何将NSString*转换为ANTLR3\u UINT8或ANTLR3\u UINT16

  •  3
  • AndersK  · 技术社区  · 16 年前

    有人能告诉我把NSString*转换成ANTLR3字符串(在C中使用)的正确方法是什么吗?

       char buf[255];   
       if ( YES == [myNSString getCString:buf maxLength:255 encoding:NSStringEncodingConversionAllowLossy] )
       {
          pANTLR3_UINT8 theExpression = (pANTLR3_UINT8*)buf;
          ...
    
    1 回复  |  直到 16 年前
        1
  •  0
  •   Laurent Etiemble    15 年前

    假设您希望完整的字符串不丢失,可以使用以下代码:

    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);
    

    当然,如果字符丢失不重要,可以使用其他编码。

    推荐文章