Xcode 9.2中#include <sstream>无法使用,字符串与整数拼接报错
解决C++字符串与数字拼接的编译错误
嘿,我来帮你搞定这个问题!你遇到的报错和<sstream>其实没关系——是代码里有两个关键问题导致的:
问题1:字符串与整数直接相加不合法
C++里std::string类型和int类型不能直接用+运算符拼接,这就是你看到Invalid operands to binary expression ('basic_string...' and 'int')报错的核心原因。你虽然包含了<sstream>头文件,但根本没用到它来做类型转换。
问题2:cout的输出运算符用反了
cout是输出流,应该用<<运算符来输出内容,而你写成了>>(这是输入流cin才会用的输入运算符),这也会导致编译错误。
方法1:用stringstream正确拼接(对应你引入的头文件)
这是你原本想使用的方案,我们来正确实现它:
#include <iostream> #include <sstream> using namespace std; int main() { string name = "Jane"; int age = 28; // 创建stringstream对象,用来逐步拼接内容 stringstream infoStream; infoStream << "Name: " << name << "; age:" << age; // 把流中的内容转换为string类型 string info = infoStream.str(); // 正确使用cout的输出运算符 cout << info << endl; return 0; }
方法2:用to_string直接转换整数(C++11及以上可用)
如果你的编译器支持C++11或更高版本,这个方法更简洁:
#include <iostream> #include <string> using namespace std; int main() { string name = "Jane"; int age = 28; // 用to_string把int转成string后,直接拼接所有内容 string info = "Name: " + name + "; age:" + to_string(age); cout << info << endl; return 0; }
两种方法都能解决你的问题,选哪种看你的需求和编译器版本~
内容的提问来源于stack exchange,提问作者Mariana C Hutten Czapski
相关产品推荐
相关产品推荐

