NSStringがstd :: stringに属するconst char *を弱く含んでいる最も安全な方法は何ですか?以下の両方の例は、単純なテスト、ログ、およびNSTableViewに表示されているように動作しますが、私は道路までの奇妙な動作を懸念しています。 c_str()の余分なヌル文字である可能性があります(長さパラメータが渡されたため)単純に無視され、いずれか正常に動作します。NSStringが弱くstd :: stringのconst char *を保持する
は考える:次に
std::string const * stdstring = new std::string("Let's see if this works");
:
NSString * aStr = [[NSString alloc] initWithBytesNoCopy:
stdstring->data() length: stdstring->length()
encoding:NSUTF8StringEncoding freeWhenDone:NO];
か:
NSString * aStr2 = [[NSString alloc] initWithBytesNoCopy:
stdstring->c_str() length: stdstring->length()
encoding:NSUTF8StringEncoding freeWhenDone:NO];
または何か他のものを?
これを読んでいる他の人には、文字列のコピーは大部分のケースで非常に安いです。あなたの解析する巨大な(100kB +)文字列を除き、これを危険にさらすことはありません。あなたがそれをしている場合は、最初にそれらを単一の文字列としてロードする必要性を確認してください。このような「スピードアップ」を見る前にプロフィールを作成してください。 – rvalue