私は、最後の部分(サフィックス)を何度か変更する必要があり、新しい文字列を生成する必要がある文字列を持っています。ストリームを使用すると文字列の連結よりも速くなると思うので、私はostringstreamを使ってこれを行うようにしています。しかし、前の接尾辞が後の接尾辞よりも大きければ、それはうんざりします。ストリームはヌル文字も取り除きます。なぜ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;
}
出力
Hello Universe
Hello Worldrse
しかし、私はHello World
をしたいです。これはどうすればいいですか?これをもっと速く行うための他の方法はありますか?
編集: 追加std::ends
が追加されます。しかし、それが内部的にどのように動作するのだろうか。また、同じことをするより速い方法があるかどうかを知りたい。
のようにそれを行うことができませんでした - あなたは 'のstd ::文字列の変異体のいずれかを検討する必要があります。 :replace() ' – Nim