web-dev-qa-db-ja.com

NSStringをchar配列に変換します

const char arr[]="Hello There";

上記のように文字配列を作成しようとしています。

以下は、私が使用するコードです。これはchar配列を作成する正しい方法ですか?.

-(void) createCharArray:(NSString*) text{
   char arr[text.length];
   for(int i=0;i<text.length;i++){
    arr[i]=[text characterAtIndex:i];
   }
}

Null終了について心配する必要がありますか?同じことを達成する他の方法はありますか?

17
NNikN

UTF8Stringを使用できます。例:[myString UTF8String]

35
Pranav

いいえ、それはいくつかのレベルで正しい方法ではありません。 NSStringはUnicodeをサポートしています。これは、バイト配列に収まる可能性のある文字数をはるかに超えています。

ユニコードを8ビット文字に変換する場合は、UTF8のようなエンコーディングを使用する必要があります。

メソッドgetCString:maxLength:encoding:を見て、NSUTF8StringEncodingを使用してみてください。

そのメソッドは、1回の呼び出しで実行したいことを実行する必要があります。

3
Duncan C

使用する、

NSString *str = @"Hello There";
const char *c = [str cStringUsingEncoding:NSUTF8StringEncoding];
3
Akhilrajtr