C++中輸入輸出十六進制八進制

 

本文參考連接:https://www.cnblogs.com/hxsyl/archive/2012/09/18/2691693.html,經從新實驗得此文html

1.進制問題

默認狀況下使用cin和cout實現十進制數據的輸入輸出。若是要輸入輸出八進制或十六進制等格式,需在cin或cout中指明相應的數據形式,oct爲八進制,hex爲十六進制,dec爲十進制。例子以下:ios

int main()
{
    int i, j, k, l;
    cout << "輸入 八進制:i(oct), 十六進制:j(hex), 十六進制:k(hex), 十進制:l(dec) :" << endl;
    cin >> oct >> i; //輸入爲八進制數
    cin >> hex >> j; //輸入爲十六進制數
    cin >> k; //輸入仍爲十六進制數
    cin >> dec >> l; //輸入爲十進制數
    cout << "i dec:" << dec << i << ";\thex: 0x" << hex << i << ";\toct: 0" << oct << i << endl;
    cout << "j dec:" << dec << j << ";\thex: 0x" << hex << j << ";\toct: 0" << oct << j << endl;
    cout << "k dec:" << dec << k << ";\thex: 0x" << hex << k << ";\toct: 0" << oct << k << endl;
    cout << "l dec:" << dec << l << ";\thex: 0x" << hex << l << ";\toct: 0" << oct << l << endl;

    cout << dec << endl; //恢復十進制輸出狀態
    system("pause");
    return 0;
}

【運行結果】:函數

輸入 八進制:i(oct), 十六進制:j(hex), 十六進制:k(hex), 十進制:l(dec) :
012 0x16 0x16 50
i dec:10; hex: 0xa; oct: 012
j dec:22; hex: 0x16; oct: 026
k dec:22; hex: 0x16; oct: 026
l dec:50; hex: 0x32; oct: 062post

 

幾點說明:

spa

  1. 使用不帶.h的頭文件<iostream>時,必須在cin中指明數制,不然從鍵盤輸入時,不認八進制和十六進制數開頭的0和0x標誌。指明後可省略0和0x標誌。
  2. 進制控制只適用於整型變量,不適用於實型和字符型變量。
  3. 輸入數據的格式、個數和類型必須與cin中的變量一一對應,不然不只使輸入數據錯誤,並且影響後面其餘數據的正確輸入。
  4. 在cin或cout中指明數制後,該數制將一直有效,直到從新指明使用其餘數制。

二、數據間隔

經常使用設置方法:輸出空格符或回車換行符。

指定數據輸出寬度:用C++提供的函數setw()指定輸出數據項的寬度。setw()括號中一般給出一個正整數值,用於限定緊跟其後的一個數據項的輸出寬度。如:setw(8)表示緊跟其後的數據項的輸出佔8個字符寬度。3d

#include<iomanip>

using namespace std;

int main()
{
    int i = 2, j = 3;
    float x = 2.6, y = 1.8;
    cout << setw(6) << i << setw(10) << j << endl;
    cout << setw(10) << i*j << endl;
    cout << setw(8) << x << setw(8) << y << endl;

    system("pause");
    return 0;
}

 

【運行結果】:code

2 3
6
2.6 1.8htm

 

 

setw()只能限定緊隨其後的一個數據項,輸出後即回到默認輸出方式。
使用setw()必須在程序開頭再增長一句: #include<iomanip>blog

相關文章
相關標籤/搜索