C++ can';t在c+中直接支持concated int和string+;? intx=10; 字符串str; str+=x; 您首先需要将x转换为std::string: int x=10; string str; str+=x; cout<<"hello"<<str<<endl;

C++ can';t在c+中直接支持concated int和string+;? intx=10; 字符串str; str+=x; 您首先需要将x转换为std::string: int x=10; string str; str+=x; cout<<"hello"<<str<<endl;,c++,C++,首先需要将x转换为std::string: int x=10; string str; str+=x; cout<<"hello"<<str<<endl; 对于这种需求,您需要使用 string str = std::to_string(x) /* + "" */; intx=10; 细流ss//创建字符串流 ss对于这种需求,您需要使用 string str = std::to_string(x) /* + "" */; intx=10; 细流ss

首先需要将
x
转换为
std::string

int x=10;
string str;
str+=x;
cout<<"hello"<<str<<endl;
对于这种需求,您需要使用

 string str = std::to_string(x) /* + "" */;
intx=10;
细流ss//创建字符串流
ss对于这种需求,您需要使用

 string str = std::to_string(x) /* + "" */;
intx=10;
细流ss//创建字符串流

ssC++没有真正的字符类型;在C++中,字符是 整数类型,当您向字符串添加数字时,它是 被认为是一个字符代码。在大多数系统上,
10
对应 到新行的字符代码,因此在您的示例中,
str
+=x
str
中追加一个新行字符。(处理任何 作为字符的算术类型可能不是一个好主意,但是 从C语言的早期开始,情况就一直如此,并且不断变化 考虑到大量的资金,现在这里的任何事情都是不可能的 另一方面,使用
+
+=
来 格式化非字符串类型肯定是个坏主意。)

如果需要将非字符串数据格式化为字符串,请使用
std::ostringstream
。这也将允许您指定如何 你想把东西格式化。(有许多方法可以表示
数值
10
作为字符串。)

C++没有真正的字符类型;在C++中,字符是 整数类型,当您向字符串添加数字时,它是 被认为是一个字符代码。在大多数系统上,
10
对应 到新行的字符代码,因此在您的示例中,
str
+=x
str
中追加一个新行字符。(处理任何 作为字符的算术类型可能不是一个好主意,但是 从C语言的早期开始,情况就一直如此,并且不断变化 考虑到大量的资金,现在这里的任何事情都是不可能的 另一方面,使用
+
+=
来 格式化非字符串类型肯定是个坏主意。)

如果需要将非字符串数据格式化为字符串,请使用
std::ostringstream
。这也将允许您指定如何 你想把东西格式化。(有许多方法可以表示
数值
10
作为字符串。)

@VusP是的,只是不适用于整数。\yes.如您在回答中所示。@VusP是的,只是不适用于整数。\yes.如您在回答中所示。在C++11中,哪个库/h包含std::to_string()?@jiafu
。是否需要在make中启用C++11?如何启用?在C++11中,哪个库/h包含std::to_string()?@jiafu
。是否需要在make中启用C++11?如何启用它?比我快4秒:)但请在提供引用时使用,其中包含一些有问题的示例。当然,如果要输出到流,则不需要
std::ostringstream
;您只需输出
int
。(你不应该使用
stringstream
,但是
std::ostringstream
)比我快4秒:)但是请在你提供参考时使用,包含一些有问题的例子。当然,如果你要输出到流,你不需要
std::ostringstream
;您只需输出
int
。(您不应该使用
stringstream
,而应该使用
std::ostringstream