Mengapa saya tidak bisa menggunakan std :: copy dengan std :: string ke std :: string lain? [duplikat]
Aug 16 2020
Kode berikut mencetak string kosong dan saya tidak dapat memahami mengapa demikian?
#include <string>
#include <algorithm>
#include <iostream>
int main()
{
std::string s="hello";
std::string r;
std::copy(s.rbegin(),s.rend(), r.begin());
std::cout<<r;
return 0;
}
Jawaban
5 songyuanyao Aug 16 2020 at 20:46
Masalahnya rkosong std::string, tidak mengandung chars. std::copymencoba menyalin tugas charsejak r.begin(), yang mengarah ke UB.
Anda dapat membuat yang rberisi 5 elemen terlebih dahulu.
std::string r(5, '\0');
Atau
std::string r;
r.resize(5);
Atau gunakan std::back_inserter.
std::string r;
std::copy(s.rbegin(),s.rend(), std::back_inserter(r));
Kiat Pemilik Anjing yang Bermanfaat: Mengapa Penting untuk Membiarkan Anjing Anda Mengendus di Jalan
Jana Duggar: Semua yang Dia Katakan Tentang Cinta dan Jendela 5 Tahunnya untuk Menemukan 'Yang Satu'