int x=10;
string str;
str+=x;
cout<<"hello"<<str<<endl;
为什么只打印hello,而不是hello10?
无法在c ++中连接int和string吗?
答案 0 :(得分:3)
您需要使用stringstream来满足此类要求。
int x=10;
stringstream ss;//create a stringstream
ss << x;//add number to the stream
string str=ss.str();
cout<<"hello"<<str<<endl;//Will print hello10
return 0;
答案 1 :(得分:2)
首先,您需要将x
转换为std::string
:
string str = std::to_string(x) /* + "" */;
答案 2 :(得分:1)
C ++没有真正的字符类型;在C ++中,字符是
一个整数类型,当你向一个字符串添加一个数字时,它就是
被认为是字符代码。在大多数系统上,10
对应
对于新行的字符代码,因此在您的示例中,str
+= x;
会将新行字符附加到str
。 (治疗任何
算术类型作为char可能不是一个好主意,但这个
自C的早期以来一直如此,并且正在发生变化
现在任何事都是不可能的,考虑到数量
代码会破裂。另一方面,使用+
或+=
格式化非字符串类型绝对是个坏主意。)
如果需要将非字符串数据格式化为字符串,请使用
std::ostringstream
。这也允许您指定如何
你想要格式化的东西。 (有很多方法可以表示
数值10
为字符串。)