2011-10-27 46 views
0

我正在將一個Objective-C應用程序移植到C++,並且在任何一種語言中都是相當新的。在我正在處理的類中,有相當多的字符串文字NSString或指向字符串NSString *的指針。什麼是C++中那些字段的最佳等效值:std::stringstd::string *const char *在C++中,objective-c NSString *的最佳等價物是什麼?

最初,我認爲std::string更像C++ - 而const char *更像C,所以我應該使用前者。我的同事說,後者是首選,因爲它更快,更輕,並且不涉及複製。但是,如果我應將std::string作爲參考在構造函數中作爲參考const std::string & param,它將被複制一次。

對我來說,選擇相當於NSString *的最佳選擇是什麼?

非常感謝您的回覆。

回答

2

NSString是一個不可變的字符串,所以const std::string是正確的選擇。如果您在任何地方將其用作參考,則不會有副本。

+0

這是關於NSString是不可變的一個好處。 –

0

一般的答案應該是使用std::string。但是,根據您的情況,您可以選擇const char *。如果你正確使用前者,你不會招致太多的複製處罰,但你可以獲得各種記憶安全。

相關問題