C ++のobjective-c NSString *と同等のものは何ですか?

私はobjective-cアプリケーションをC ++に移植しており、どちらの言語でもかなり新しいです。私が現在扱っているクラスでは、文字列リテラル NSString または文字列 NSString * へのポインタである非常に多くのフィールドがあります。 std :: string std :: string * または const char * は、C ++のフィールドに最もよく似たものは何ですか?

Initially, I thought that std::string is more c++-like and const char * is more C-like so i should use the former. My colleague says that the latter is preferred because it is faster and lighter and there is no copying involved. However, if I should pass std::string as a reference in constructor as const std::string & param it would be copied once only.

NSString * と同等のものを選択する最良の選択肢は何ですか?

あなたの応答に感謝します。

0

2 答え

NSStringは不変の文字列なので、 const std :: string は正しい選択です。どこでも参照として使用すると、コピーは作成されません。

2
追加された
それはNSStringが不変であることについての良い点です。
追加された 著者 Michael Price,

一般的な答えは、 std :: string を使用することです。しかし、状況によっては const char * を選択することもできます。前者を正しく使用すると、あまりにも多くのコピー罰を受けることはありませんが、あらゆる種類のメモリが保護されます。

0
追加された