14

could anyone tell me or point me to a simple example of how to append an int to a stringstream containing the word "Something" (or any word)?

3 Answers 3

18
stringstream ss;
ss << "Something" << 42;

For future reference, check this out.

http://www.cplusplus.com/reference/iostream/stringstream/

Sign up to request clarification or add additional context in comments.

Comments

3

I'd probably do something on this general order:

#include <string>
#include <sstream>
#include <iostream>

int main() {      
    std::stringstream stream("Something ");

    stream.seekp(0, std::ios::end);
    stream << 12345;

    std::cout << stream.str();
    return 0;
}

With a normal stream, to add to the end, you'd open with std::ios::ate or std::ios::app as the second parameter, but with string streams, that doesn't seem to work dependably (at least with real compilers -- neither gcc nor VC++ produces the output I'd expect when/if I do so).

2 Comments

@hassan: no, stringstream has no c_str() method
-1 The output produced is 12345hing, as the initialization of a std::stringstream object without setting the position at which to start writing will cause any input to be written at the beginning of the stream buffer.
1

If you are already using boost, it has lexical_cast that can be be used for this. It is basically a packaged version of the above, that works on any type that can be written to and read from a stream.

string s("something");

s += boost::lexical_cast<string>(12);

Its probably not worth using if you aren't using boost already, but if you are it can make your code clearer, especially doing something like

foo(string("something")+boost::lexical_cast<string>(12));

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.