web-dev-qa-db-ja.com

Objective-CでcharをNSStringにキャストまたは変換する

Objective-CでcharをNSStringに変換するにはどうすればよいですか?

Nullで終了するC文字列ではなく、単純なchar c = 'a'

27
Senkwe

stringWithFormat:を使用して、次のように%cの形式で文字を表すことができます。

char c = 'a';
NSString *s = [NSString stringWithFormat:@"%c", c];
37
BoltClock

次のように1つの文字からC文字列を作成できます。

char cs[2] = {c, 0}; //c is the character to convert
NSString *s = [[NSString alloc] initWithCString:cs encoding: SomeEncoding];

または、文字がASCII文字(ラテン文字、数字、または句読記号))であることがわかっている場合は、別の方法を示します。

unichar uc = (unichar)c; //Just extend to 16 bits
NSString *s = [NSString stringWithCharacters:&uc length:1];

後者のスニペットは、国別文字で確実に失敗します(クラッシュしないが、誤ったストリングを生成します)。それらについては、16ビットへの単純な拡張は、Unicodeへの正しい変換ではありません。そのため、encodingパラメータが必要です。

また、上記の2つのスニペットは、割り当て解除要件が異なる文字列を生成することに注意してください。後者は自動解放された文字列を作成し、前者は[release]呼び出しを必要とする文字列を作成します。

7
Seva Alekseyev