首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> C++ 入門

C++ IO 流操作詳解(五):格式控制與未格式化輸入輸出

     編輯:C++ 入門

浮點數計數法控制

使用操縱符控制輸出格式:

  • scientific:科學計數法(如 1.23e+02)
  • fixed:定點十進制(如 123.00)
  • hexfloat:十六進制浮點數(C++11)
  • defaultfloat:恢復默認格式(C++11)

最佳實踐:除非需要對齊列輸出或金額/百分比顯示,否則讓標準庫自動選擇。

小數點強制顯示

showpoint 強制顯示小數點(即使小數部分為 0),noshowpoint 恢復默認。

cout << showpoint << 10.0 << noshowpoint << endl; // 輸出 10.0000

輸出補白與對齊

  • setw(w):下一個輸出佔寬至少 w 字符。
  • left/right/internal:左對齊/右對齊(默認)/符號左數值右對齊。
  • setfill(ch):填充字符,默認空格。

<iomanip> 中其他常用操縱符:setprecision(n)、setbase(b)。

輸入格式控制

默認跳過空白符。noskipws 使 operator>> 讀取空白符,skipws 恢復。

cin >> noskipws;
char ch; while (cin >> ch) cout << ch; // 會讀入空格、制表、換行
cin >> skipws; // 恢復

未格式化輸入輸出操作

將流視為原始字節序列,不解釋格式。

函數說明
is.get(ch)讀取單字節存入 ch,返回 is
os.put(ch)寫入單字節,返回 os
is.get()返回下一字節的 int 值
is.putback(ch)將 ch 放回流,必須是最後讀取的字符
is.unget()流退回一字節
is.peek()查看下一字節不取出

多字節操作

  • is.get(sink, size, delim):讀至 delim 或 size 或 EOF,delim 留在流中。
  • is.getline(sink, size, delim):類似但讀取並丟棄 delim。
  • is.read(sink, size):讀取 size 字節,返回 is。
  • os.write(source, size):寫入 size 字節,返回 os。
  • is.ignore(size, delim):讀並丟棄至 delim 或 size,默認 size=1, delim=EOF。
  • is.gcount():返回上一次未格式化讀取操作讀取的字節數。

返回 int 的原因

get() 和 peek() 返回 int 而非 char,是為了區分 EOF(負值)與合法字符(轉為 unsigned char 再提升為 int,保證非負)。標準宏 EOF 定義在 <cstdio>。

int ch; while ((ch = cin.get()) != EOF) cout.put(ch);
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved