首页 > 解决方案 > 包括不能在 Xcode 9.2 中工作

问题描述

我现在正在学习 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;
}

标签: c++stringcompiler-errorsstream

解决方案


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

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

一切看起来都很好,直到"; age:" + age。您不能添加 astringint。您可以使用std::to_string将 转换int为 a 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;

推荐阅读