2012-12-08 77 views
-2

爲什麼在使用wchar_t時將數字作爲輸出結果?寬字符輸出結果

#include <iostream> 
using namespace std; 
int main() 
{ 
    wchar_t q; 
    q = 'A'; 
    cout << q; 
    q = 'B'; 
    cout << q; 
    q = 'C'; 
    cout << q; 
    return 0; 
} 
+3

使用'std :: wcout'和寬字面值。 – chris

+0

用wcout << q;我確實得到了ABC結果 – user1888353

+1

我並不是100%確定規則是什麼,但是'wchar_t'可以像一個整數或其他東西一樣對待,所以這就是爲什麼你得到數字 - 因爲'wchar_t'沒有'operator <<'與'std :: ostream',所以它轉換爲一個整數,並使用該重載。 – chris

回答

3

所顯示的 '數字' 是字符的。這就是你獲得「數字」的原因。如果你想顯示的字符,你可以使用wcout

0

std::coutbasic_iostream<char>。對於wchar_tbasic_iostream<char>沒有operator<<過載。當輸出wchar_t對象時,必須將它們轉換爲某種類型,並且該對象存在operator<<過載。選定的轉換是除char以外的整數類型,因此顯示的是整數值而不是所表示的字符。