【问题标题】:How to use C++ String Streams to append int?如何使用 C++ 字符串流附加 int?
【发布时间】:2010-01-14 17:39:11
【问题描述】:

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

【问题讨论】:

    标签: c++ string stringstream


    【解决方案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));
      

      【讨论】:

        猜你喜欢
        • 2015-04-22
        • 2010-09-09
        • 1970-01-01
        • 1970-01-01
        • 2020-11-18
        • 2011-02-10
        • 2013-10-06
        • 2012-11-09
        相关资源
        最近更新 更多