unichar* to NSString,获取长度



我正在尝试从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++函数传递给我,所以我认为我需要迭代,直到我找到一个终止字符?谁有代码片段可以提供帮助?谢谢!

字符缓冲区是否为空终止?是16位的unicode吗?

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

你的unichar应该是null终止的,所以当你在指针中达到两个空字节(一个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说明符

最新更新