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