C++讀取單個字符操作示例詳解
get() istream類成員函數(shù)
get() 是 istream 類的成員函數(shù),它有多種重載形式,不過本文只介紹最簡單最常用的一種:
int get();
此函數(shù)從輸入流中讀入一個字符,返回值就是該字符的 ASCII 碼。

EOF
如果碰到輸入的末尾,則返回值為 EOF。EOF 是 End of File 的縮寫。
istream 類中從輸入流(包括文件)中讀取數(shù)據(jù)的成員函數(shù),在把輸入數(shù)據(jù)都讀取完后再進行讀取,就會返回 EOF。

EOF 是在 iostream 類中定義的一個整型常量,值為 -1。get() 函數(shù)不會跳過空格、制表符、回車等特殊字符,所有的字符都能被讀入。例如下面的程序:
#include <iostream>
using namespace std;
int main()
{
int c;
while ((c = cin.get()) != EOF)
cout.put(c);
return 0;
}程序運行情況
http://c.biancheng.net/cplus/↙
http://c.biancheng.net/cplus/
C++ Tutorial↙
C++ Tutorial
^Z↙
↙表示回車鍵,^Z表示 Ctrl+Z 組合鍵。
程序中的變量 c 應為 int 類型,而不能是 char 類型。在輸入流中碰到 ASCII 碼等于 0xFF 的字符時,cin.get() 返回 0xFF,0xFF 賦值給 c,此時如果 c 是 char 類型的,那么其值就是 -1(因為符號位為 1 代表負數(shù)),即等于 EOF,于是程序就錯誤地認為輸入已經結束。
而在 c 為 int 類型的情況下,將 0xFF 賦值給 c,c 的值是 255(因為符號位為 0,是正數(shù)),而非 -1,即除非讀到輸入末尾,c 的值都不可能是 -1。
要將文本文件 test.txt 中的全部內容原樣顯示出來,程序可以如下編寫:
#include <iostream>
using namespace std;
int main()
{
int c;
freopen("test.txt", "r", stdin); //將標準輸入重定向為 test.txt
while ((c = cin.get()) != EOF)
cout.put(c);
return 0;
}以上就是C++讀取單個字符操作示例詳解的詳細內容,更多關于C++讀取單個字符操作的資料請關注腳本之家其它相關文章!
相關文章
VSCode遠程代碼開發(fā)及DNS隧道端口轉發(fā)實現(xiàn)遠程辦公代碼
這篇文章主要介紹了VSCode遠程代碼開發(fā)及DNS隧道端口轉發(fā)實現(xiàn)遠程辦公,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-04-04
OpenCV reshape函數(shù)實現(xiàn)矩陣元素序列化
reshape函數(shù)是OpenCV中一個很有用的函數(shù),不僅可以改變矩陣的通道數(shù),還可以對矩陣元素進行序列化。本文將主要介紹如何通過reshape實現(xiàn)矩陣元素序列化,需要的小伙伴可以參考一下2021-12-12
C++ 字符串string和整數(shù)int的互相轉化操作
這篇文章主要介紹了C++ 字符串string和整數(shù)int的互相轉化操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-12-12

