C ++ 'daki nesnel-c NSString *' in en iyi karşılığı nedir?

C ++ için bir objektif-c başvurusu yapıyorum ve her iki dilde oldukça yeni. Şu anda idare ettiğim sınıfta, NSString dizgisi veya NSString * dizgesine işaret eden çok sayıda alan var. C ++ içindeki bu alanların en iyi karşılığı nedir: std :: string , std :: string * veya const char * ?

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 * eşdeğerini seçmem için en iyi seçenek hangisi olurdu?

Yanıtlarınız için çok teşekkürler.

0

2 cevap

NSString değişmez bir dizedir, bu yüzden const std :: string doğru seçimdir. Her yerde referans olarak kullanırsanız, kopyalarınız olmazdı.

2
katma
Bu, NSString'in değişmez olduğu hakkında iyi bir nokta.
katma yazar Michael Price, kaynak

Genel cevap std :: string kullanmak olmalıdır. Ancak, koşullarınıza bağlı olarak const char * 'i seçebilirsiniz. Eğer eskiyi doğru kullanırsanız, çok fazla kopya cezası almayacaksınız, ancak her türlü bellek güvenliği elde edersiniz.

0
katma