0

バッファの長さがわからないconstunicharバッファからNSStringオブジェクトを作成しようとしています。

NSString stringWithCharacters:length:メソッドを使用して文字列を作成したいのですが(これは機能しているようです)、長さを見つけるのを手伝ってもらえますか?

私は持っています:

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

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

unicharLenが何であるかを確認する方法を誰かが見つけるのを手伝ってもらえますか?C ++関数の呼び出しによってこの長さが戻されないので、終了文字が見つかるまで繰り返す必要があると思いますか?誰かが役立つコードスニペットを持っていますか?ありがとう!

4

2 に答える 2

2

charバッファはnullで終了しますか?16ビットユニコードですか?

NSString *emAdd = [NSString stringWithFormat:@"%S", c_emAdd];
于 2011-07-26T16:52:51.953 に答える
1

ポインタで2つのnullバイト( unichar unichar= 0x0000)に達したときに長さがわかるように、sはnullで終了する必要があります。

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

于 2011-07-26T17:02:47.133 に答える