Ответ 1
NSString *foo = @"Foo";
std::string bar = std::string([foo UTF8String]);
Изменить: через несколько лет позвольте мне расширить этот ответ. Как было справедливо указано, вы, скорее всего, захотите использовать cStringUsingEncoding:
с NSASCIIStringEncoding
, если вы собираетесь использовать std::string
. Вы можете использовать UTF-8 с обычным std::strings
, но имейте в виду, что они работают с байтами, а не с символами или даже с графемами. Для хорошего "начала работы" ознакомьтесь с этим вопросом и его ответом.
Также обратите внимание: если у вас есть строка, которая не может быть представлена как ASCII, но вы все еще хотите ее в std::string
, и вам не нужны символы, отличные от ASCII, вы можете использовать dataUsingEncoding:allowLossyConversion:
для получения a NSData
представление строки с контентом ASCII с кодировкой с потерями, а затем выбросить ее на ваш std::string