When trying to concatenate a string in ostringstream, which string contents are modified and reconstructed, string get added at beginning [duplicate]

StackOverflow https://stackoverflow.com/questions/12454255

  •  02-07-2021
  •  | 
  •  

Вопрос

Possible Duplicate:
What is the purpose of ostringstream's string constructor?

I am facing below issue. I have an ostringstream say testStr. I first insert few characters inside it using <<

testStr << somechar;

Then I modified:

testStr.Str("some string")

so that now testStr is containing "Some String"

Now I want to add some characters(say " " and "TEST") at the end so that it can become "Some String TEST".

testStr << " " << "TEST";

But I am getting " TESTString". Please let me know what can be done?

Adding sample code:

#include <iostream>
#include <sstream>
int main() {
  std::ostringstream s;
  s << "Hello";
  s.str("WorldIsBeautiful");
  s << " " << "ENDS";
  std::cout << s.str() << std::endl;

}

Output is " ENDSIsBeautiful" where as I expected "WorldIsBeautiful ENDS".

Это было полезно?

Решение

I'm not overly sure, but it looks like it's still set to write at the beginning. To fix this, you can call s.seekp(0, std::ios_base::end); to set the output position indicator back to the end. I have a working sample here:

#include <iostream>
#include <sstream>

int main() {
  std::ostringstream s;
  s.str( "Hello" );
  s.seekp(0, std::ios_base::end);
  s << "x" << "World";
  std::cout << s.str() << std::endl;
}

Output:

HelloxWorld
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top