使用cout将字符显示为十进制数

4
在C编程语言中,我可以使用printf函数来显示一个字符及其十进制等价物,代码如下:
char c='e';
printf( "decimal value: %d   char value: %c\n",c,c);

如何使用cout在C++中实现相同的功能?例如,下面的代码可以显示字符,但是我该如何让cout打印十进制值?

char c='e';
cout << c;

1
为什么使用 C 语言标签? - Mohit Jain
3个回答

14
cout << +c;

一元 + 强制类型转换运算符会将 char 隐式地转换为 int

点击此处查看演示

来源于 5.3.1 一元运算符,又称 expr.unary.op

[7] 一元 + 运算符的操作数应具有算术、未作用域枚举或指针类型,并且结果是参数的值。对于整数或枚举类型的操作数执行整数提升。结果的类型是所提升操作数的类型。


进一步阅读:


3
我喜欢这个答案,因为它让我可以对所有模板参数 charshortintlonglong long 使用相同的函数体。 - mxmlnkn
@mxmlnkn 谢谢。我很高兴你喜欢它。 - Mohit Jain

8

c转换为int的最佳C++方法是static_cast< int >( c )


4

在C++中,您可以将字符转换为int类型以获得其十进制值,例如:

char c='e';
std::cout << "Decimal : " << (int)c << std::endl;
std::cout << "Char : " << c;

通过执行 (int)c ,你可以将它暂时转换为 int 类型并获取十进制值。

这个过程被称为类型转换


4
一个C风格的强制类型转换,真的吗? - Mohit Jain

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接