1. istream的類方法
常用的istream的類方法有:
- 方法
get(char&)
和get(void)
提供不跳過空白的單字符輸入功能; - 函數
get(char*, int, char)
和getline(char*, int, char)
在默認情況下讀取整行而不是一個單詞。
單字符輸入 :
在使用char參數或沒有參數的情況下,get()
方法讀取下一個輸入字符,即使該字符是空格、制表符或換行符。
get(char & ch)------該版本將輸入字符賦給其參數,并返回調用對象(cin)。
get(void)-----------該版本將輸入字符轉換為整型(通常是int),并將其返回。
兩者的主要特性如下:
字符串輸入 :
getline()
成員函數和get()
的字符串讀取版本都讀取字符串,它們的函數特征標相同(這是從更為通用的模板聲明簡化而來的):
istream & get(char *, int, char);
istream & get(char *, int);
istream & getline(char *, int, char);
istream & getline(char *, int);
【 注 :第一個參數是用于放置輸入字符串的內存單元的地址。第二個參數比要讀取的最大字符數大1(額外的一個字符用于存儲結尾的空字符,以便將輸入存儲為一個字符串)。第3個參數指定用作分界符的字符,只有兩個參數的版本將換行符用作分界符。上述函數都在讀取最大數目的字符或遇到換行符后為止】
例如:
char line[50];
cin.get(line, 50);//cin.get( )函數將在到達第49個字符或遇到換行符(默認情況)后停止將輸入讀取到數組中
【 注 :get()
和getline()
之間的主要區別在于,get()
將換行符留在輸入流中,這樣接下來的輸入操作首先看到的將是換行符,而getline()
抽取并丟棄輸入流中的換行符。】
如何忽略字符串中某些內容呢?C++為我們提供了ignore( )
函數,該函數的原型如下:
//第一個參數是一個數字,指定要讀取忽略的最大字符數,默認為1
//第二個參數是一個字符,用作輸入的分界符,默認為EOF
istream & ignore(int = 1, int = EOF);
//eg:
if (ch != 'n') cin.ignore(255, 'n'); //可以用來忽略上次輸入流中殘余的字符串
2. 其他istream方法
除前面討論過的外,其他istream
方法包括read()
、peek()
、gcount()
和putback()
。
其使用方法如下:
//read()
char read_arr[100];
cin.read(read_arr, 100);//其返回值類型為istream &,可以這樣拼接使用:cin.read(read_arr, 10).read(read_arr + 10, 90);
//peek()
char input[100];
int i = 0;
while(cin.peek() != '.')
cin.get(input[i++]);
input[i]='?';
//gcount()
char arr[20];
istringstream stream("abc");
stream.read(arr, sizeof arr);
auto count = stream.gcount();//count = 3
//putback()
char c;
int n;
char str[256];
cout < < "Enter a number or a word: ";
c = cin.get();
if ((c >= '0') && (c <= '9')) {
cin.putback(c);
cin > > n;
cout < < "You have entered number " < < n < < endl;
} else {
cin.putback(c);
cin > > str;
cout < < " You have entered word " < < str < < endl;
}
-
存儲器
+關注
關注
38文章
7514瀏覽量
164012 -
字符串
+關注
關注
1文章
584瀏覽量
20553 -
C++語言
+關注
關注
0文章
147瀏覽量
7009
發布評論請先 登錄
相關推薦
評論