Tengo un NSString
objeto y quiero convertirlo en un std::string
.
¿Cómo hago esto en Objective-C ++?
objective-c
objective-c++
gabor
fuente
fuente
Respuestas:
Editar: Después de unos años, permítanme ampliar esta respuesta. Como se señaló con razón, lo más probable es que desee usar
cStringUsingEncoding:
conNSASCIIStringEncoding
si va a terminar usandostd::string
. Puede usar UTF-8 con normalstd::strings
, pero tenga en cuenta que operan en bytes y no en caracteres o incluso grafemas. Para un buen "comienzo", consulte esta pregunta y su respuesta .También tenga en cuenta que si tiene una cadena que no se puede representar como ASCII pero aún la quiere en un
std::string
y no desea caracteres que no sean ASCII allí, puede usarladataUsingEncoding:allowLossyConversion:
para obtener unaNSData
representación de la cadena con ASCII codificado con pérdida contenido, y luego tírelo a tustd::string
fuente
-cStringUsingEncoding:
en su lugar. :)new
s están bien vistas, y unastd::shared_ptr
ostd::unique_ptr
deben ser preferidos.Como sugirió Ynau en el comentario, en un caso general sería mejor mantener todo en la pila en lugar de en el montón (el uso
new
crea la cadena en el montón), por lo tanto (asumiendo la codificación UTF8):fuente
Como se señaló en philjordan.eu , también podría ser que NSString sea
nil
. En tal caso, el yeso debe hacerse así:Esto lo llevaría a tal conversión:
fuente