c - 如何将 NSString* 转换为 ANTLR3_UINT8 或 ANTLR3_UINT16

标签 c objective-c antlr

有人能告诉我将 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);

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

关于c - 如何将 NSString* 转换为 ANTLR3_UINT8 或 ANTLR3_UINT16,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2687760/

相关文章:

c - 参数类型之间的区别

c - 使用 sscanf_s 时变量周围的堆栈已损坏

ios - 如何使用 youtube-ios-player-helper 库在 iOS 中更改 youtube 视频的音量

ios - 硬件->设备的奇怪问题

java - 如何简化 token 预测 DFA?

c - 为什么释放动态分配的内存会在这里产生问题?

c - Malloc 不会对超过 8 个输入进行排序

ios - 如何区分自定义单元格中的 3 个对象

java - 在JAVA中使用ANTLR从字符串中获取表达式

java - 语法无法识别|| (或)运算符