14

谁能告诉我或指向一个简单的示例,说明如何将 int 附加到包含单词“Something”(或任何单词)的字符串流中?

4

3 回答 3

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

以供将来参考,请查看此内容。

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

于 2010-01-14T17:40:37.870 回答
3

我可能会按照这个一般顺序做一些事情:

#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;
}

使用普通流,添加到最后,您可以使用std::ios::atestd::ios::app作为第二个参数打开,但使用字符串流,这似乎不能可靠地工作(至少对于真正的编译器——gcc 和 VC++ 都不会产生输出我希望何时/如果我这样做)。

于 2010-01-14T17:42:24.883 回答
1

如果你已经在使用 boost,它有lexical_cast可以用来做这个。它基本上是上述的打包版本,适用于任何可以写入和读取流的类型。

string s("something");

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

如果您还没有使用 boost,它可能不值得使用,但如果您使用它,它可以使您的代码更清晰,尤其是做类似的事情

foo(string("something")+boost::lexical_cast<string>(12));
于 2010-01-14T18:25:23.723 回答