【问题标题】:unichar* to NSString, get the lengthunichar* 到 NSString,获取长度
【发布时间】:2011-07-26 16:45:09
【问题描述】:

我正在尝试从我不知道缓冲区长度的 const unichar 缓冲区创建一个 NSString 对象。

我想使用 NSString stringWithCharacters:length: 方法来创建字符串(这似乎可行),但请你帮我找出长度吗?

我有:

const unichar *c_emAdd = [... returns successfully from a C++ function...]

NSString *emAdd = [NSString stringWithCharacters:c_emAdd length = unicharLen];

谁能帮我找出如何检查 unicharLen 是什么?我没有通过调用 C++ 函数将这个长度传回给我,所以我认为我需要迭代直到找到终止字符?有人有代码 sn-p 来帮忙吗?谢谢!

【问题讨论】:

    标签: ios ipad nsstring unichar


    【解决方案1】:

    你的 char 缓冲区 null 终止了吗? 是 16 位的 unicode 吗?

    NSString *emAdd = [NSString stringWithFormat:@"%S", c_emAdd];
    

    【讨论】:

      【解决方案2】:

      您的unichars 应该以空值结尾,这样当您在指针中达到两个空字节(一个 unichar = 0x0000)时,您就会知道长度。

      unsigned long long unistrlen(unichar *chars)
      {
          unsigned long long length = 0llu;
          if(NULL == chars) return length;
      
          while(NULL != chars[length])
              length++;
      
          return length;
      }
      
          //...
          //Inside Some method or function
          unichar chars[] = { 0x005A, 0x0065, 0x0062, 0x0072, 0x0061, 0x0000 };
      
          NSString *string = [NSString stringWithCharacters:chars length:unistrlen(chars)];
      
          NSLog(@"%@", string);
      

      或者更简单的格式,%S specifier

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-07-14
        • 2011-10-21
        • 2013-07-27
        • 1970-01-01
        • 1970-01-01
        • 2012-06-13
        • 1970-01-01
        相关资源
        最近更新 更多