У меня есть NSString
объект, и я хочу преобразовать его в std::string
.
Как мне это сделать в Objective-C ++?
objective-c
objective-c++
Габор
источник
источник
Ответы:
Изменить: через несколько лет позвольте мне расширить этот ответ. Как правильно указано, вы, скорее всего, захотите использовать
cStringUsingEncoding:
с,NSASCIIStringEncoding
если собираетесь использоватьstd::string
. Вы можете использовать UTF-8 с обычным кодомstd::strings
, но имейте в виду, что они работают с байтами, а не с символами или даже графемами. Для хорошего начала ознакомьтесь с этим вопросом и ответом на него .Также обратите внимание, что если у вас есть строка, которая не может быть представлена как ASCII, но вы все еще хотите, чтобы она была в,
std::string
и вы не хотите, чтобы там были символы, отличные от ASCII, вы можете использоватьdataUsingEncoding:allowLossyConversion:
для полученияNSData
представления строки с кодировкой ASCII с потерями контент, а затем бросьте это в свойstd::string
источник
-cStringUsingEncoding:
вместо этого. :)new
с неодобрением, иstd::shared_ptr
илиstd::unique_ptr
должны быть предпочтительным.Как предложил Ynau в комментарии, в общем случае было бы лучше сохранить все в стеке, а не в куче (использование
new
создает строку в куче), следовательно (при условии кодировки UTF8):источник
Как указано на philjordan.eu, возможно, что NSString - это
nil
. В таком случае слепок следует производить так:Это привело бы вас к такому преобразованию:
источник