c++ - print - ¿Cuándo debo usar string en lugar de stringstream?
stringstream c++ ejemplo (2)
¿Cuándo debo usar stringstream
lugar de string::append()
? Suponiendo que voy a catenar solo cuerdas.
stringstream ss;
ss << str1 << "str2" << ...
Write(ss.str());
O:
string str;
str.reserve(10000);
str.append(str1);
str.append("str2");
...
Write(str);
¿Cuál de ellos es más rápido?
No sé cuál será más rápido, pero si tuviera que adivinar diría que su segundo ejemplo es, especialmente desde que llamó a la función miembro de reserve
para asignar un gran espacio para la expansión.
Si solo está concatenando cadenas, use string::append
(o string::operator+=
).
Si va a convertir números a su representación de cadena, así como formatearlos durante la conversión, y luego agregar los resultados de la conversión juntos, use cadenas de cadenas. Menciono la parte de formato explícitamente porque si no requiere el formato C ++ 11 ofrece std::to_string
que se puede usar para convertir tipos numéricos en cadenas.
string.append es mucho más rápido. Especialmente cuando se reserva.
Si está concatenando solo cadenas, yo usaría string.append. Solo usaría stringstream cuando necesito convertir automáticamente non-strings en strings, por ejemplo:
const int x(42);
stringstream ss;
ss << "My favorite number is: " << x << std::endl;
Aquí, la cadena de caracteres convierte automáticamente x en una cadena y la añade. No necesito llamar a atoi. Stringstream convertirá automáticamente todos los tipos básicos para ti. Es genial para ese propósito.
Además, si solo va a dirigir los datos a la cadena para convertirlos a una cadena más adelante. Puedes usar ostringstream que es para salida.
Espero que eso ayude.