Mengkonversi C ++ string
ke array char cukup mudah menggunakan c_str
fungsi string dan kemudian lakukan strcpy
. Namun, bagaimana cara melakukan yang sebaliknya?
Saya memiliki array char seperti: char arr[ ] = "This is a test";
untuk dikonversi kembali ke:
string str = "This is a test
.
const char*
, sehingga Anda bisa meneruskannya dengan string literal atau char array (yang meluruh ke sana)."hello world"
adalah array. Jika Anda menggunakannyasizeof("hello world")
akan memberi Anda ukuran array (yaitu 12), daripada ukuran pointer (kemungkinan 4 atau 8).string
konstruktor tidak akan bekerja dengan, misalnya, argumen string berlalu dinyatakan sebagaiunsigned char * buffer
, sesuatu yang sangat umum dalam menangani aliran byte perpustakaan.std::string str(buffer, buffer+size);
tetapi mungkin lebih baik untuk tetap menggunakanstd::vector<unsigned char>
dalam kasus itu.str
adalah tidak seorang mualaf-fungsi di sini. Ini adalah nama variabel string. Anda dapat menggunakan nama variabel lainnya (misstring foo(arr);
.). Konversi dilakukan oleh konstruktor std :: string yang disebut secara implisit.Solusi lain mungkin terlihat seperti ini,
yang menghindari menggunakan variabel tambahan.
sumber
cout << "test:" + std::string(arr);
string aString(someChar);
?Ada masalah kecil yang terlewat dalam jawaban terpilih. Yaitu, array karakter dapat berisi 0. Jika kita akan menggunakan konstruktor dengan parameter tunggal seperti yang ditunjukkan di atas, kita akan kehilangan beberapa data. Solusi yang mungkin adalah:
Output adalah:
sumber
std::string
sebagai wadah untuk data biner dan tidak dapat memastikan bahwa array tidak mengandung '\ 0'.DI LUAR:
sumber