Tengo una cadena cuya última parte (sufijo) debe cambiarse varias veces y necesito generar nuevas cadenas. Estoy tratando de usar ostringstream para hacer esto, como creo, el uso de secuencias será más rápido que las concatenaciones de cadenas. Pero cuando el sufijo anterior es mayor que el anterior, se arruina. La secuencia también elimina los caracteres nulos.¿Por qué la tira ostringstream NULL?
#include<iostream>
#include<sstream>
using namespace std;
int main()
{
ostringstream os;
streampos pos;
os << "Hello ";
pos = os.tellp();
os << "Universe";
os.seekp(pos);
cout<< os.str() << endl;
os << "World\0";
cout<< os.str().c_str() << endl;
return 0;
}
salida
Hello Universe
Hello Worldrse
Pero quiero Hello World
. ¿Cómo hago esto? ¿Hay alguna otra manera de hacer esto de una manera más rápida?
Editar: Apendice std::ends
funciona. Pero me pregunto cómo funciona internamente. También me gustaría saber si hay formas más rápidas de hacer lo mismo.
No tan seguro de que stringstream será el más eficiente - usted debe considerar una de las variantes del 'std :: string: : replace() ' – Nim