使用cout打印增量字符

时间:2016-02-16 23:58:10

标签: c++ pointers

为什么我必须在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++;
    }
}

2 个答案:

答案 0 :(得分:5)

*pconst char,添加1integer literal)会将其提升为int(请参阅this link中的数字促销)。您必须将其强制转换回char

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

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

答案 1 :(得分:0)

更改

cout << (*p+1);

cout << *(p+1);

这适用于@LogicStuff所述的原因。