c++標準庫里有針對外設輸入操作進行處理的類——istream。而常用的cin則是istream的類物件。因此實際上我們可以重新定義新的輸入流物件代替cin對輸入進行操作。而我們常用的istream類成員函式有如下一些:
原型:istream& getline (char* s, streamsize n, char delim )
提取一行的字串,s 是儲存資料的變數的名字,n為輸入資料的長度,delim為結束的標誌字元(遇到就結束,不理會資料有多長,可以不要)
char name[256];
std::cout
<< "please, enter your name: ";
std::cin.getline (name,256);
std::cout
<< "hell0, "
<< name;
note: cin.getline()與getline()是不同的, getline()的原型是istream& getline ( istream &is , string &str , char delim ),使用前必須包含標頭檔案,其使用例子如下(同樣,delim可不寫,則預設為回車結束):string line;
cout
<< "please cin a line:"
<< endl;
getline(cin,line,'#');
cout
<< "the input line is:"
<< line;
原型:istream& ignore (streamsize n = 1, int delim = eof)
忽略輸入流中的n個字元,或者當遇到輸入流中有乙個值等於delim時停止忽略並返回。
cin >> first;
cin.ignore(256, '\0');
cin >> last;
cout << endl << first
<< endl << last
<< endl;
get()的主要函式原型有以下三種:
1). int get();
從指定的輸入流中讀入乙個字元(包括空白字元);遇到輸入流中的檔案結束符時,此get函式返回eof;
char ch;
ch = cin.get();
cout
<< ch << endl;
2). istream& get (char& c);
從輸入流讀取乙個字元(包括空白字元),並將其儲存在字元變數 c 中。事實上get(char& c)與get( )作用基本相同;
char ch;
cin.get(ch);
cout
<< ch << endl;
3). istream& get (char* s, streamsize n, char delim = 『\n』);
從輸入流中讀取n-1個字元,存於字元指標 s指向的記憶體。如果在讀取n-1個字元之前遇到指定的終止字元delim,則提前結束讀取。程式會自動在字串最後增加乙個』\0』表示結束;
char *s;
cin.get(s, 18, '\#');
if(s[17] == '\0')
cout
<< s << endl;
char s[20], ch;
intcount=0;
while(cin.get(ch))
原型:istream& putback (char c);
把乙個字元放回輸入流當中;可用於檢查用get()確定資料的開頭後將其放回然後再操作。
原型:istream& read (char* s, streamsize n);
該函式只是純粹的提取輸入流的n長度的資料段並儲存在s中,它不會檢查s的內容也不會在末尾增加null字元(『\0』)。如果提取過程中失敗,s儲存之前提取的內容,且eofbit以及failbit置1。
原型:streamsize gcount() const;
統計最後一次非正規操作讀取的字元數,非正規操作(即除》外其他讀入輸入流資料的操作,如:get, getline, ignore, peek, read, readsome, putback and unget等);
char str[20];
cout
<< "please, enter a word: ";
cin.getline(str,20);
cout
<< cin.gcount() << " characters read:"
<< str << '\n';
C 中輸入流istream狀態管理3
在 c 中輸入流istream狀態管理2 中提到,rdstate 成員函式可以獲取流當前的狀態,即ios base iostate。ios base iostate對應的狀態有ios base goodbit ios base eofbit ios base badbit和ios base fail...
istream類的公有成員函式
1 eatwhite 2 get 3 getline 4 gcount 5 ignore 6 operator 7 peek 8 read 9 seekg 10 tellg 1 eatwhite 忽略前導空格 2 gcount 統計最後輸入的字元個數 3 get 從流中提取字元,包括空格 std c...
istream類的一些成員函式
呼叫方法 cin.getline 字元陣列 或字元指標 字元個數n,終止標誌字元 預設是以 n 為終止標字元,即終止標誌字元可以不寫。特別注意 用getline函式從輸入流讀字元時,遇到終止標誌字元時結束,指標移到該終止標誌字元之後,下乙個getline函式將該終止標誌的下乙個字元開始接著讀入,如果...