2011-07-12 1 views
0

sprintfを使用して、UTF8Stringを使用する代わりにNSStringから文字列を引き出したいですか? は、私はこの作品を知っている:sprintfを使用して、UTF8Stringを使用する代わりにNSStringから文字列を引き出したいですか?

NSString *nsSDummy = [[NSString alloc] initWithObjects: @"red"]; 
char *strDummy; 

strDummy = [nsSDummy UTF8String]; 

をしかし、次の操作を実行したい:あなたはできません

NSString *nsSDummy = [[NSString alloc] initWithObjects: @"red"]; 
char *strDummy; 

sprintf(strDummy, "%@", nsSDummy); <<--Unknown conversion type character "@" in format 

おかげ

+2

sprintfはC関数であり、NSStringの存在と%@の意味を認識していません。とにかくUTF8Stringの何が問題なのですか? – Eelke

+0

sprintfでは複数の項目を含めることができました... –

+1

の形式で複数の項目を含めることができます... [NSString stringWithFormat:@ "%@%@%@"、@ "a" 、@ "big"、@ "dog"]; 'は大文字の' @ "という文字列になります。 –

答えて

4

このようにすることはできません。sprintfはCocoaのデータ型について何も知らないからです。

あなたはすなわち

​​
2

を。あなたが投稿した場合

sprintfを使用する理由はありません。ちょうどUTF8Stringを使用し、それで済むようにしてください。より複雑な場合は、NSStringのstringWithFormat:メソッドを使用し、結果のNSStringにUTF8Stringを使用します。

投稿のためのトリミングの結果だけど、完全に間違ってsprintfを使用しています(初期化されていないポインタを渡しています)、クラッシュしたり悪くなったりします。とにかく代わりにsnprintfまたはasprintfを使用してください。

0

あなたはstrDummyをALLOCまたはこのよう

int len = 10; 
char[len] _strDummy; 
char *strDummy = &_strDummy; 
//...and continue your code 
を行う必要があります、CStringのを作成するように構築文字列を使用し、その後 NSStringstringWithFormat、または NSMutableStringさん appendFormat:方法 を使用することができます

よく見る!

関連する問題