Olá!
Preciso implementar uma String em C++, e ao longo do tempo adicionar outros caracteres à mesma variável. Em java, consigo fazer isso utilizando o StringBuffer. Como posso fazer isso em C++?
Olá!
Preciso implementar uma String em C++, e ao longo do tempo adicionar outros caracteres à mesma variável. Em java, consigo fazer isso utilizando o StringBuffer. Como posso fazer isso em C++?
Em Java String
s são imutáveis, o que faz com que multiplas concatenações sejam pesadas. Então entra a StringBuilder
(ou StringBuffer
) que é como a String
, mas mutáveis.
Em C++ é o contrário, strings já são mutáveis e por isso é comum você fazer simplesmente isso sem comprometer a performance:
std::string str = "Hello";
str += ", World";
// OU
str.append("!!!");
Porém você não pode concatenar strings e números, por exemplo. O código abaixo não se comportaria como esperado ou geraria erro:
// Age de forma inesperada
str += 123;
// Erro de compilação
str.append(123);
E então surge o std::stringstream
que trata uma simples string como se fosse uma stream e nos permite usá-la como se fosse, por exemplo, o std::cout
.
// Não esqueça do header <sstream>
std::stringstream ss;
ss << "Hello ";
ss << 123;
std::string str = ss.str();
std::cout << str;
Não é legal? Eu vi isso aqui:
StackOverflow | C++ equivalent of StringBuffer/StringBuilder?.
Isto também pode ser útil: