C++ 在C+中,将加法后的字符打印为字符串+;

C++ 在C+中,将加法后的字符打印为字符串+;,c++,string,c++14,c++17,C++,String,C++14,C++17,我试图在C++中以“字符串”的形式打印 '/COD>。p> string s = to_string((char)('a'+ 3)); cout << s << endl; string s=to_string((char)('a'+3)); 你需要的是 std::string s( 1, 'a'+ 3 ); 或 或者像 std::string s( 1, 'a' ); s.back() += 3; (有几种方法可以获得预期的结果) 至于这个声明, string

我试图在C++中以“字符串”的形式打印<代码> '/COD>。p>
string s = to_string((char)('a'+ 3));

cout << s << endl;
string s=to_string((char)('a'+3));
你需要的是

std::string s( 1, 'a'+ 3 );

或者像

std::string s( 1, 'a' );
s.back() +=  3;
(有几种方法可以获得预期的结果)

至于这个声明,

string s = to_string((char)('a'+ 3));
然后表达式(char)('a'+3)被隐式转换为
int
类型(由于所选重载函数std::to_string的参数类型的整数提升),在调用std::to_string后表示为字符串。

是一个将整数值或浮点值转换为字符串的函数。在这种情况下你不应该使用它

简单使用

std::cout << 'a' + 3 << std::endl;

std::cout请注意,不存在接受字符的重写,这就是为什么您的字符被提升为
int
,然后被转换为字符串。我希望('a'+3)得到结果“d”。此行为是否由于字符串方法而被重写?@Bhawan:
'a'+3
int
类型
(char)('a'+3)
在使用ASCII编码的平台上确实是
'd'
。Vlad提出的要点是,不存在使用
字符的
to_string
重载;最好的方法是使用一个
int
@Bhawan重载的to_string函数集将其具有整数类型的参数转换为字符串。因此,即使您编写了(char)('a'+3),该表达式也会根据所选重载函数转换为整数类型。此函数用于将数字转换为字符串。请注意,
std::string
有一个
运算符=
,它接受一个
char
,因此
s+='a'+3可以是
s='a'+3
std::cout << 'a' + 3 << std::endl;
char c = 'a' + 3;
std::cout << c << std::endl;
std::string s = std::string{'a' + 3};
std::cout << s << std::endl;