Что является лучшим эквивалентом target-c NSString * в C ++? - PullRequest
0 голосов
/ 28 октября 2011

Я портирую приложение target-c на C ++, и я довольно новичок в любом из этих языков. В классе, которым я сейчас занимаюсь, есть довольно много полей, которые являются строковыми литералами NSString или указателями на строку NSString *. Что является лучшим эквивалентом этих полей в C ++: std::string, std::string * или const char *?

Изначально я думал, что std::string больше похож на c ++, а const char * больше похож на C, поэтому я должен использовать первое. Мой коллега говорит, что последний предпочтительнее, потому что он быстрее и легче, и нет необходимости в копировании. Однако, если я должен передать std::string в качестве ссылки в конструкторе как const std::string & param, он будет скопирован только один раз.

Какой лучший вариант для меня я выбрал бы для эквивалента NSString *?

Большое спасибо за ваши ответы.

Ответы [ 2 ]

2 голосов
/ 28 октября 2011

NSString - неизменная строка, поэтому const std::string - правильный выбор.Если вы будете использовать его как ссылку везде, у вас не будет копий.

0 голосов
/ 28 октября 2011

Общий ответ должен состоять в использовании std::string.Однако, в зависимости от ваших обстоятельств, вы можете выбрать const char *.Если вы используете первый правильно, вы не будете слишком много штрафовать за копирование, но вы получите все виды безопасности памяти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...