在標準輸入流與輸出流中使用控制符筆記

2021-07-10 08:22:51 字數 2371 閱讀 1397

控制符作用

dec設定數值的基數為10

hex設定數值的基數為16

cot設定數值的基數為8

setfill(c)

設定填充字元c,c可以是字元常量,也可以是字元變數

setprecision(n)

設定浮點數的精度為n位。在以一般的十進位制小數形式輸出時,n代表有效數字。在以fixed(固定小數字數)形式和scientific(指數)形式輸出時,n為小數字數。

setw(n) 

設定字段寬度為n位

setiosflags(ios::fixed) 

設定浮點數以固定小數字數顯示

setiosflags(ios::scientific)

設定浮點數以科學計數法(即指數)顯示

setiosfags(ios::left)

資料左對齊

setiosflags(ios::right)

資料右對齊

setiosflags(ios::skipws) 

忽略前導的空格

setiosflags(ios::uppercase)

資料以十六進製制輸出時字母以大寫表示

setiosflags(ios::lowercase) 

資料以十六進製制輸出時字母以小寫表示

setiosflags(ios::showpos) 

輸出正數時給出加號

注意:c++程式設計(第三版)上面的**中提到過setiosflags(ios::lowercase),但是編譯器裡面是沒有這個控制符的,在編譯器裡面是用不了這個控制符的。

#include

#include

using namespace std;

int main()

{int a,f;

double b,c,d,e;

a=62;

cout<

b=12345.678;

setprecision(6); //設定浮點數精度為6

cout<0

注意:①.上面的源**中並沒有setiosflags(ios::skipws)的舉例。

②.在上面程式執行時出現了誤差,控制符setiosflags(ios::scientific)控制b輸出的理論值應該是1.234568e+004,但是輸出的值是12345.7,後面有用另外乙個編譯器編譯(編譯此**的編譯器分別是dev c++,visual c++6.0),得到的結果仍然與此圖相同,然後另外單獨寫了源**嘗試這組資料,而得到的結果與理論符合,不理解存在這種誤差的原因。

注意點:

1.關閉格式控制符的方法是在在格式控制符前面加re即可。例如:cout<2.假如要使用控制符,要在程式單位的開頭額外加上iomanip標頭檔案;

關於setiosflags(ios::skipws)控制符:

這裡需要說明的是setiosflags(ios::skipws)是乙個輸入控制符,而不是乙個輸出控制符,cin是預設把skipws開啟的。

**:(開啟情況,也是預設情況)

#include

#include

using namespace std;

int main()

{ char s1,s2,s3;

cin>>setiosflags(ios::skipws);

cin>>s1>>s2>>s3;

cout<

關閉情況:

#include

#include

using namespace std;

int main()

{ char s1,s2,s3;

cin>>resetiosflags(ios::skipws);

cin>>s1>>s2>>s3;

cout<

分析:skipws的意思是吃掉空格,在第一種情況也就是預設情況,當你連續地輸入多個資料時,由於有skipws的存在,你所按下的空格會被系統自動地過濾,此時的情況就是a='1',b='2',c='3';在第二種情況,由於沒有了skipws吃掉空格,所以你所輸入的空格也會被賦給變數,所以第二種情況是a='1',b=' ',c='2'(b等於空格),所以才出現圖中所存在的情況。

使各行小數點對其的方法:

原理:利用setw(n)、setiosflags(ios::fixed)與setiosflags(ios::ringht)實現輸出資料的右對齊和輸出資料小數點位數一致,從而達到目的。

源**:

#include

#include

using namespace std;

int main()

{double a,b,c;

a=1234.567;

b=620.62062;

c=987.96;

cout<

輸入流與輸出流

流按著資料的傳輸方向分為 輸入流 往記憶體中讀叫輸入流。輸出流 從記憶體中往外寫叫輸出流。所有輸入流都是inputstream類或者reader類的子類。類名以inputstream結尾的類都是inputstream的子類。類名以reader結尾的類都是reader類的子類。所有輸出流都是outpu...

輸入流與輸出流的理解

1 程式操作的資料都應該是在記憶體裡面,記憶體是你操作的主物件,把資料從其他資源裡面傳送到記憶體裡面,就是輸入,反之,把資料從記憶體傳送到其他資源,就是輸出。1 讀檔案 bufferedreader in new bufferedreader new inputstreamreader new fi...

輸入流與輸出流更改檔案內容

title autoreplace 方法名 description 修改檔案內容 param newfilepath 新檔案位址 新生成的檔案位址 param odlfilepath 舊檔案位址 讀的檔案位址 param oldstr 舊引數 param newstr 新引數 throws ioex...