Saya memiliki sebuah NSString
objek dan ingin mengubahnya menjadi file std::string
.
Bagaimana cara melakukan ini di Objective-C ++?
objective-c
objective-c++
gabor
sumber
sumber
Jawaban:
Sunting: Setelah beberapa tahun, izinkan saya memperluas jawaban ini. Seperti yang ditunjukkan dengan benar, Anda kemungkinan besar ingin menggunakan
cStringUsingEncoding:
denganNSASCIIStringEncoding
jika Anda akhirnya akan menggunakanstd::string
. Anda dapat menggunakan UTF-8 dengan normalstd::strings
, tetapi perlu diingat bahwa itu beroperasi pada byte dan bukan pada karakter atau bahkan grafem. Untuk "memulai" yang baik, lihat pertanyaan ini dan jawabannya .Perhatikan juga, jika Anda memiliki string yang tidak dapat direpresentasikan sebagai ASCII tetapi Anda masih menginginkannya di dalam
std::string
dan Anda tidak ingin karakter non-ASCII di sana, Anda dapat menggunakandataUsingEncoding:allowLossyConversion:
untuk mendapatkanNSData
representasi dari string dengan ASCII yang dienkode dengan lossy konten, dan kemudian melemparkannya ke Andastd::string
sumber
-cStringUsingEncoding:
sebagai gantinya. :)new
s tidak disukai, dan astd::shared_ptr
ataustd::unique_ptr
harus lebih disukai.Seperti yang disarankan Ynau di komentar, dalam kasus umum, akan lebih baik untuk menyimpan semuanya di tumpukan daripada di heap (menggunakan
new
membuat string di heap), karenanya (dengan asumsi pengkodean UTF8):sumber
Seperti dicatat di philjordan.eu , bisa juga NSString adalah
nil
. Dalam kasus seperti itu, pemeran harus dilakukan seperti ini:Ini akan membawa Anda pada pertobatan seperti itu:
sumber