У меня есть строка, последнюю часть (суффикс) которой нужно изменить несколько раз, и мне нужно сгенерировать новые строки. Я пытаюсь использовать ostringstream для этого, так как я думаю, использование потоков будет быстрее, чем конкатенация строк. Но когда предыдущий суффикс больше, чем более поздний, он ошибается. Поток также удаляет нулевые символы.
#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;
}
Вывод
Hello Universe
Hello Worldrse
Но я хочу Hello World
. Как мне это сделать? Есть ли другой способ сделать это быстрее?
Изменить:
Добавление std ::nds
работает. Но интересно, как это работает внутри. Также хотелось бы знать, есть ли более быстрые способы сделать то же самое.