繁体   English   中英

使用cout打印增量字符

[英]Printing an incremented character using cout

为什么在下面的示例中必须在code函数内部进行类型转换以返回char类型的值,因为我已经在函数定义中将其声明为char的常量指针?

特别是cout << (*p + 1) ,结果是整数格式,而当将其更改为cout << (char) (*p + 1) ,结果以char格式显示,因为我正在对它进行类型转换。

<<操作符是否具有一些默认参数,以显示哪种类型?

#include <iostream>

using namespace std;

void code(const char* p);

int main()
{
    code("This is a test");

    return 0;
}

void code(const char* p)
{
    while(*p)
    {
        cout << (*p + 1);
        p++;
    }
}

*pconst char ,加1整数文字 )会将其提升为int (请参阅此链接中的数字提升)。 您必须将其转换回char

cout << static_cast<char>(*p + 1); // abandon C-style cast

是的, std::ostream::operator<<被重载以不同地对待不同类型。

更改

cout << (*p+1);

cout << *(p+1);

这样做是出于@LogicStuff所述的原因。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM