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終了について心配する必要がありますか?同じことを達成する他の方法はありますか?
UTF8String
を使用できます。例:[myString UTF8String]
。
いいえ、それはいくつかのレベルで正しい方法ではありません。 NSStringはUnicodeをサポートしています。これは、バイト配列に収まる可能性のある文字数をはるかに超えています。
ユニコードを8ビット文字に変換する場合は、UTF8のようなエンコーディングを使用する必要があります。
メソッドgetCString:maxLength:encoding:を見て、NSUTF8StringEncodingを使用してみてください。
そのメソッドは、1回の呼び出しで実行したいことを実行する必要があります。
使用する、
NSString *str = @"Hello There";
const char *c = [str cStringUsingEncoding:NSUTF8StringEncoding];