如何使用 C++ 字符串流附加 int?
Posted
技术标签:
【中文标题】如何使用 C++ 字符串流附加 int?【英文标题】:How to use C++ String Streams to append int? 【发布时间】:2010-01-14 17:39:11 【问题描述】:谁能告诉我或给我一个简单的例子,说明如何将一个 int 附加到包含单词“Something”(或任何单词)的字符串流中?
【问题讨论】:
【参考方案1】:stringstream ss;
ss << "Something" << 42;
为了将来参考,请查看此内容。
http://www.cplusplus.com/reference/iostream/stringstream/
【讨论】:
【参考方案2】:我可能会按照这个一般顺序做一些事情:
#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::ate
或std::ios::app
作为第二个参数打开,但是对于字符串流,这似乎并不可靠(至少对于真正的编译器) -- gcc 和 VC++ 都不会产生我期望的输出(当/如果我这样做)。
【讨论】:
@hassan: 不,stringstream 没有 c_str() 方法 -1 产生的输出是12345hing
,因为初始化std::stringstream
对象而不设置开始写入的位置将导致任何输入写入流缓冲区的开头.【参考方案3】:
如果您已经在使用 boost,它有 lexical_cast 可以用于此。它基本上是上述的打包版本,适用于任何可以写入和读取流的类型。
string s("something");
s += boost::lexical_cast<string>(12);
如果你还没有使用 boost,它可能不值得使用,但如果你已经使用它,它可以让你的代码更清晰,尤其是做类似的事情
foo(string("something")+boost::lexical_cast<string>(12));
【讨论】:
以上是关于如何使用 C++ 字符串流附加 int?的主要内容,如果未能解决你的问题,请参考以下文章