【问题标题】:include <sstream> not working in Xcode 9.2包括 <sstream> 在 Xcode 9.2 中不起作用
【发布时间】:2018-05-15 16:14:48
【问题描述】:

我现在正在学习 c++,但在尝试连接字符串和数字时遇到了问题,因为 sstream 不适合我。

我得到的错误是:

二进制表达式的无效操作数('basic_string, std::__1::allocator >' 和 'int')。

代码如下:

#include <iostream>
#include <sstream>
using namespace std;

int main() {
    string name = "Jane";
    int age = 28;

    string info = "Name: " + name + "; age:" + age;
    cout >> info >> endl;

    return 0;
}

【问题讨论】:

  • 与 sstream 无关 - 您不能在 C++ 中连接像 string info = "Name: " + name + "; age:" + age; 这样的任意类型。没有什么是 sstream 允许您这样做的。
  • 你能显示字符串流不工作的代码吗? string info = "Name: " + name + "; age:" + age; 永远不会工作。
  • @VictorGubin 这个问题似乎根本没有拆分字符串...你能详细说明为什么你认为它是重复的吗?

标签: c++ string compiler-errors stream


【解决方案1】:

您的问题不在于sstream,而在于这里的这一行:

string info = "Name: " + name + "; age:" + age;

"; age:" + age 之前,一切看起来都很好。您不能添加stringint。您可以使用std::to_stringint 转换为string

string info = "Name: " + name + "; age:" + to_string(age);

to_string 是在 C++11 中添加的,但是如果由于某种原因你不能使用 C++11,你可以使用 stringstreams 自己定义这个函数:

template <typename T>
string to_string(const T &thing) {
    std::ostringstream oss;
    oss << thing;
    return oss.str();
}

另请注意,您在cout 上使用了提取运算符。你可能是这个意思:

cout << info << endl;

【讨论】:

    【解决方案2】:

    要使用字符串流创建连接字符串和其他类型的新字符串,您需要这样的东西:

     int meaning = 42;
     ostringstream os;
     os << "The meaning of life is " << meaning;
     string s = os.str();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-25
      • 2015-02-21
      • 2019-01-31
      • 2011-08-10
      • 1970-01-01
      • 2011-09-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多