unichar *到NSString,得到长度

时间:2011-07-26 16:45:09

标签: ios ipad nsstring unichar

我正在尝试从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 ++函数将这个长度传递给我,所以我认为我需要迭代直到找到终止字符?任何人都有一个代码片段来帮忙吗?谢谢!

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

你的unichar应该为空终止,所以当你在指针中找到两个空字节(一个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

格式