ostringstream unexpected behaviour

O

Old Wolf

#include <iostream>
#include <ostream>
#include <sstream>

int main(void)
{
std::eek:stringstream oss;

oss << "foo";

oss.str("APP");
std::cout << oss.str() << '\n';
oss << "END";
std::cout << oss.str() << '\n';

oss.str("");
oss << "APP";
std::cout << oss.str() << '\n';
oss << "END";
std::cout << oss.str() << std::endl;

return 0;
}

I expected to see the output:

APP
APPEND
APP
APPEND

but the second line said "END" instead. Why is this?
What is the best way to set the string in an ostringstream,
and leave it in a usable state?
 
V

Victor Bazarov

Old Wolf said:
#include <iostream>
#include <ostream>
#include <sstream>

int main(void)
{
std::eek:stringstream oss;

oss << "foo";

oss.str("APP");
std::cout << oss.str() << '\n';
oss << "END";
std::cout << oss.str() << '\n';

oss.str("");
oss << "APP";
std::cout << oss.str() << '\n';
oss << "END";
std::cout << oss.str() << std::endl;

return 0;
}

I expected to see the output:

APP
APPEND
APP
APPEND

but the second line said "END" instead. Why is this?
What is the best way to set the string in an ostringstream,
and leave it in a usable state?

Open the ostringstream for append (see ios_base::app).

Victor
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,968
Messages
2,570,153
Members
46,701
Latest member
XavierQ83

Latest Threads

Top