Por que não posso usar std :: copy com std :: string para outro std :: string? [duplicado]
Aug 16 2020
O código a seguir imprime uma string vazia e não consigo entender por que é assim.
#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;
}
Respostas
5 songyuanyao Aug 16 2020 at 20:46
O problema é r
um vazio std::string
, não contém char
s. std::copy
está tentando copiar-atribuir char
s desde r.begin()
, o que leva ao UB.
Você pode fazer r
contendo 5 elementos com antecedência.
std::string r(5, '\0');
Ou
std::string r;
r.resize(5);
Ou use std::back_inserter
.
std::string r;
std::copy(s.rbegin(),s.rend(), std::back_inserter(r));
O que significa um erro “Não é possível encontrar o símbolo” ou “Não é possível resolver o símbolo”?
George Harrison ficou chateado por suas letras de 'Hurdy Gurdy Man' de Donovan não terem sido usadas