Почему ostringstream убирает NULL?

У меня есть строка, последнюю часть (суффикс) которой нужно изменить несколько раз, и мне нужно сгенерировать новые строки. Я пытаюсь использовать 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 работает. Но интересно, как это работает внутри. Также хотелось бы знать, есть ли более быстрые способы сделать то же самое.

5
задан balki 14 July 2011 в 08:01
поделиться