2011-07-14 6 views
35

私はこの質問が重複している可能性があることを知っていますが、このフォーラムでもいくつかのGoogleチュートリアルや質問を見ても、私はこの件についてまともな回答を得ていません。NSStringをCの文字列に変換するには?

私が持っている:

NSString *str = @"text"; 

そして、私のような何かをしたいと思います:

char cstring [512] = str; 

(これが唯一の私が何をしたいのかを示し、AppleのNSStringのクラスのRefを見た後、私は」didnのそれを使用することについて考えることさえありません)。

は、今まで私が持っている:

char command [512] = [[NSString stringWithFormat:@"text"] cStringUsingEncoding:NSUTF8StringEncoding]; 

それでも、それを私はエラーを取得します。

答えて

117

はC文字列ではなく文字の配列として、ポインタとして返されるconst char *command = [str UTF8String];

+2

巨大な感謝:)! – Matoe

26

してみてください。これを使用するには、変数をポインタに変更します。

const char *command = [theString cStringUsingEncoding:NSUTF8StringEncoding]; 

あなたがUTF8エンコーディングをしたいので、あなたはUTF8String便利なメソッドを使用することができます。

const char *command = [theString UTF8String]; 

あなたはデータが文字配列に格納する必要がある場合は、バッファとして配列を渡し、getCString:maxLength:encoding:方法を使用することができます。これにより、文字列をバッファに直接格納することができ、バッファが小さすぎるかどうかがわかります。

char command[512]; 
if(![theString getCString:command maxLength:sizeof(command)/sizeof(*command) encoding:NSUTF8StringEncoding]) { 
    NSLog(@"Command buffer too small"); 
}