c+;中objective-c NSString*的最佳等价物是什么+;? 我正在移植一个Objto-C应用程序到C++,在任何一种语言中都是新的。在我现在处理的类中,有相当多的字段是字符串文本NSString或指向字符串NSString*的指针。在C++中,这些字段的最佳等效项是什么:std::string、std::string*或const char*

c+;中objective-c NSString*的最佳等价物是什么+;? 我正在移植一个Objto-C应用程序到C++,在任何一种语言中都是新的。在我现在处理的类中,有相当多的字段是字符串文本NSString或指向字符串NSString*的指针。在C++中,这些字段的最佳等效项是什么:std::string、std::string*或const char*,c++,objective-c,string,char,C++,Objective C,String,Char,起初,我认为std::string更像c++,而const char*更像c,所以我应该使用前者。我的同事说,后者更受欢迎,因为它更快、更轻,而且不涉及复制。但是,如果我将std::string作为构造函数中的引用传递为const std::string¶m,则只会复制一次 对于等效的NSString*,我最好选择什么 非常感谢您的回复。一般的答案应该是使用std::string。但是,根据您的具体情况,您可以选择const char*。如果正确使用前者,您不会受到太多的复制惩罚,但您会

起初,我认为
std::string
更像c++,而
const char*
更像c,所以我应该使用前者。我的同事说,后者更受欢迎,因为它更快、更轻,而且不涉及复制。但是,如果我将
std::string
作为构造函数中的引用传递为
const std::string¶m
,则只会复制一次

对于等效的
NSString*
,我最好选择什么


非常感谢您的回复。

一般的答案应该是使用
std::string
。但是,根据您的具体情况,您可以选择
const char*
。如果正确使用前者,您不会受到太多的复制惩罚,但您会获得各种内存安全。

NSString是一个不可变的字符串,因此
const std::string
是正确的选择。如果你在任何地方都使用它作为参考,你就不会有副本