c++中用于字符输入的函数
1.get()
使用gas函數(shù)可以輸入一個或多個字符,有多種重載格式,其函數(shù)原型如下:
(1)int get(); (2) istream& get(char& c); (3) istream& get(char * s, streamsize n); (4) istream& get(char* s, streamsize n, char delim); (5) istream& get(streambuf& strbuf); (6) istream& get(streambuf& strbuf, char delim);其中,前兩個函數(shù)可以從輸入流中讀取一個字符,
第(1)個函數(shù)返回值是讀取的字符的
ASCⅡ值,
第(2)個函數(shù)把讀取的字符存儲在變量c中;
第(3)個和第(4)個函數(shù)從輸入流中讀取二1個字符或者遇到換行符n(第(3)個函數(shù))遇到 delim(第(4)個函數(shù))表示的終止符結(jié)束,讀取的字符存儲到C語言風(fēng)格的字符串s中,在字符串s的末尾自動添加空字符10;
最后兩個函數(shù)從輸入流中讀取字符插入 strbuf表示的輸出流中,遇到\n或 delim表示的終止符結(jié)束。
注意:
多余的字符、換行符‘\n’、終止符delim仍然留在輸入流中
例如:
2.getline()
getline()函數(shù)從輸入流中提取多個字符。其函數(shù)原型如下:
(1) istream& getline(char * s, streamsize n); (2) istream& getline(char* s, streamsize n, char delim);從輸入流中讀取n-1個字符,遇到換行符"n’結(jié)束(第(1)個函數(shù))或者遇到終止符delim(第(2)個函數(shù))結(jié)束,把讀取的字符存儲在C語言風(fēng)格的字符串s中,在s的末尾自動添加空字符‘\0’。
與get()函數(shù)不同的是, getline(函數(shù)的換行符n和終止符deim從輸入流中讀出并丟棄,不存儲在字符串s中。
如果未讀取到字符,或者讀取n-1個字符后仍然沒有遇到終止符,流狀態(tài)標志 failbit被設(shè)置。如果終止符恰好是第n個字符,即讀取n-1個字符后恰好遇到終止符,流狀態(tài)標志 failbit不會被設(shè)置。
注意:
用get(函數(shù)或 getline()函數(shù)讀取多個字符構(gòu)成的字符串只能存儲到C語言風(fēng)格的字符數(shù)組中,如果用 string對象存儲字符串,則不能使用上述兩個 Istream的成員函數(shù),應(yīng)該使用全局函數(shù) getline()。其函數(shù)原型如下:
我們主要使用前兩個重載函數(shù),其功能是從輸入流is中讀取字符存儲到 string類型的對象str中,遇到換行符\n’(第(1)個函數(shù))或終止符 delim(第(2)個函數(shù))時結(jié)束。例如:
string s; getline(cin, s);3.read()
read()函數(shù)原型如下:
istream& get(char * s, streamsize n);**函數(shù)功能:**從輸入流中讀取n個字符存儲到首地址是s的內(nèi)存空間中。如果還未讀取
n個字符就到文件末尾,則把實際讀取的字符串存儲到s中,流狀態(tài)標志 eorbit和 failbit被設(shè)置。
總結(jié)
以上是生活随笔為你收集整理的c++中用于字符输入的函数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vector模板,初学者必读
- 下一篇: 扩展欧几里得算法之双六问题