[英]What is the best equivalent of objective-c NSString * in C++?
我正在将一个Objective-c应用程序移植到C ++中,并且在任何一种语言中都是相当新的。 在我正在处理的类中,有很多字段是字符串文字NSString
或指向字符串NSString *
字符串。 C ++中这些字段的最佳等价物是什么: std::string
, std::string *
或const char *
?
最初,我认为std::string
更像c ++,而const char *
更像C,所以我应该使用前者。 我的同事说后者是首选,因为它更快更轻,不涉及复制。 但是,如果我应该在构造函数中将std::string
作为引用传递为const std::string & param
,它将仅复制一次。
对于我来说,选择相当于NSString *
的最佳选择是什么?
非常感谢您的回复。
NSString是一个不可变的字符串,因此const std::string
是正确的选择。 如果你在任何地方都使用它作为参考,你将没有副本。
一般的答案应该是使用std::string
。 但是,根据您的具体情况,您可以选择const char *
。 如果您正确使用前者,则不会产生太多的复制惩罚,但您可以获得各种内存安全性。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.