簡體   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