Neden std :: copy ile std :: string'i başka bir std :: string'e kullanamıyorum? [çiftleme]
Aşağıdaki kod boş bir dize yazdırıyor ve neden böyle olduğunu anlayamıyorum?
#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;
}
Yanıtlar
5 songyuanyao
Sorun r
boştur std::string
, hiç char
s içermemektedir . std::copy
o char
zamandan beri kopyalamaya-atamaya çalışıyor r.begin()
, bu da UB'ye yol açıyor.
r
Önceden 5 element içeren yapabilirsiniz .
std::string r(5, '\0');
Veya
std::string r;
r.resize(5);
Veya kullanın std::back_inserter
.
std::string r;
std::copy(s.rbegin(),s.rend(), std::back_inserter(r));
Gene Simmons, KISS Çizgi Romanlarının Potansiyel Olarak "İnsanlığı Yeniden Yaratabileceğini" Söyledi
Nicole Kidman, Michael Keaton ve Val Kilmer'in Batman Olarak Paylaştığı Bu 1 Çekici Özelliğe Bayıldı
Charly Reynolds Yakın Zamandaki Vokal Kord Ameliyatını Açıkladı: 'Şarkı Söylemekte Sorun Yaşıyordum'