不能直接在c ++中支持concat int和string吗?

时间:2014-01-21 08:47:54

标签: c++

int x=10;
string str;
str+=x;
cout<<"hello"<<str<<endl;

为什么只打印hello,而不是hello10?

无法在c ++中连接int和string吗?

3 个答案:

答案 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为字符串。)