C++ Primer 5th笔记(chap 17 标准库特殊设施)未格式化的输入/输出操作
1. 格式化IO
輸入和輸出運(yùn)算符(<< 和>>)根據(jù)讀取或?qū)懭氲臄?shù)據(jù)類型來格式化它們。
- 輸入運(yùn)算符忽略空白符
- 輸出應(yīng)用補(bǔ)白
- 精度等規(guī)則操作
2. 未格式化 IO (unformatted IO)
允許將一個(gè)流當(dāng)作一個(gè)無解釋的字節(jié)序列來處理
2.1 單字節(jié)低層IO操作
未格式化操作每次一個(gè)字節(jié)地處理流
| is.get(ch) | 從istream is讀取下一個(gè)字節(jié)存入字符cn中。返回is。 |
| os.put(ch) | 將字符ch輸出到ostream os。返回os。 |
| is.get() | 將is的下一個(gè)字節(jié)作為int返回 |
| is.putback(ch) | 將字符ch放回is。返回is。 |
| is.unget() | 將is向后移動(dòng)一個(gè)字節(jié)。返回is。 |
| is.peek() | 將下一個(gè)字節(jié)作為int返回,但不從流中刪除它。peek 返回的值仍然留在流中 |
eg.
char ch; while (cin.get (ch) )cout.put (ch) ;-
unget
輸入流向后移動(dòng), 從而最后讀取的值又回到流中。 即使我們不知道最后從流中讀取什么值, 仍然可以調(diào)用 unget -
putback
更特殊版本的 unget: 它退回從流中讀取的最后一個(gè)值, 但它接受一個(gè)參數(shù), 此參數(shù)必須與最后讀取的值相同
一般情況下, 在讀取下一個(gè)值之前, 標(biāo)準(zhǔn)庫保證我們可以退回最多一個(gè)值。標(biāo)準(zhǔn)庫不保證在中間不進(jìn)行讀取操作的情況下能連續(xù)調(diào)用 putback 或 unget
2.2 從輸入操作返回的 int 值
函數(shù)返冋一個(gè) int 的原因是: 可以返回文件尾標(biāo)記。 我們使用 char 范圍中的每個(gè)值來表示一個(gè)真實(shí)字符, 因此, 取值范圍中沒有額外的值可以用來表示文件尾
step1. 將它們要返回的字符先轉(zhuǎn)換為 unsigned char
step2. 將結(jié)果提升到 int。
即使字符集中有字符映射到負(fù)值, 這些操作返回的 int 也是正值
int ch; // 使用一個(gè) int, 而不是一個(gè) char 來保存 get ( )的返回值 //循環(huán)讀取并輸出輸入中的所有數(shù)據(jù) while ( (ch = cin.get ( ) )!= EOF)cout.put (ch) ;總結(jié)
以上是生活随笔為你收集整理的C++ Primer 5th笔记(chap 17 标准库特殊设施)未格式化的输入/输出操作的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++ Primer 5th笔记(cha
- 下一篇: C++ Primer 5th笔记(cha