如何使用 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::atestd::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?的主要内容,如果未能解决你的问题,请参考以下文章

获取字符串流 C++ 的剩余部分

C++:字符串流有啥好处?

C++ 字符串流

对和字符串流

有可能以这种方式串流吗?从字符串转换为int?

C++学习50 对字符串流的读写