Pertama-tama, jangan gunakan char*
atau char[N]
. Gunakan std::string
, maka semuanya menjadi sangat mudah!
Contoh,
std::string s = "Hello";
std::string greet = s + " World"; //concatenation easy!
Mudah bukan?
Sekarang jika Anda membutuhkan char const *
karena alasan tertentu, seperti ketika Anda ingin meneruskan ke beberapa fungsi, maka Anda dapat melakukan ini:
some_c_api(s.c_str(), s.size());
dengan asumsi fungsi ini dideklarasikan sebagai:
some_c_api(char const *input, size_t length);
Jelajahi std::string
diri Anda mulai dari sini:
Semoga membantu.
Sejak itu C ++ mengapa tidak menggunakan
std::string
bukanchar*
? Penggabungan akan menjadi sepele:sumber
operator+=
melakukan deallocation dan alokasi. Alokasi heap adalah salah satu operasi paling mahal yang biasa kami lakukan.Jika Anda memprogram dalam C, maka asumsikan
name
benar-benar adalah array dengan panjang tetap seperti yang Anda katakan, Anda harus melakukan sesuatu seperti berikut:Anda lihat sekarang mengapa semua orang merekomendasikan
std::string
?sumber
Ada fungsi strcat () dari pustaka C porting yang akan melakukan penggabungan "C style string" untuk Anda.
BTW meskipun C ++ memiliki banyak fungsi untuk menangani string gaya-C, ini bisa bermanfaat bagi Anda untuk mencoba dan membuat fungsi Anda sendiri yang melakukan itu, seperti:
...lalu...
... hasilnya adalah
file_name.txt
.Anda mungkin juga tergoda untuk menulis sendiri
operator +
namun operator IIRC membebani dengan hanya pointer karena argumen tidak diperbolehkan.Selain itu, jangan lupa hasil dalam kasus ini dialokasikan secara dinamis, jadi Anda mungkin ingin memanggil delete untuk menghindari kebocoran memori, atau Anda dapat memodifikasi fungsi untuk menggunakan array karakter yang dialokasikan tumpukan, asalkan tentu saja itu memiliki panjang yang cukup.
sumber
strncat()
fungsi alternatif yang biasanya lebih baikstrncat
tidak relevan di sini, karena kita sudah mengetahui panjang parameter kedua".txt"
. Jadi itu hanya akan terjadistrncat(name, ".txt", 4)
, yang tidak memberi kita apa-apa.strcat (tujuan, sumber) dapat digunakan untuk menggabungkan dua string di c ++.
Untuk memiliki pemahaman yang mendalam Anda dapat mencari di link berikut-
http://www.cplusplus.com/reference/cstring/strcat/
sumber
Lebih baik menggunakan kelas string C ++ daripada string C gaya lama, hidup akan jauh lebih mudah.
jika Anda sudah memiliki gaya string lama, Anda dapat mengonversinya ke kelas string
sumber
C ++ 14
Jawab pertanyaan:
sumber
sumber