一、字符串輸入:
1、面向單詞的輸入:
cin>>使用空白(空格、制表符和換行符)確定字符串的結(jié)束位置。如果一次輸入兩個(gè)單詞,中間隔著空格,則只讀取第一個(gè)單詞,并自動在結(jié)尾處添加空字符。而另一個(gè)單詞會留在緩沖中,有可能被后面的輸入讀到。
2、面向行的輸入:
1)getline,通過回車鍵輸入的換行符來確定結(jié)尾,然后丟棄換行符,并用空字符取代之。調(diào)用:cin.getline()。
有兩個(gè)參數(shù),第一個(gè)參數(shù)用來存儲字符串的名稱,第二個(gè)參數(shù)是要讀取的字符數(shù),注意要把空字符算上。
2)get,類似getline,但是將換行符留在輸入隊(duì)列中。如果要連續(xù)讀,需要用不帶參數(shù)的get()方法接收掉換行符。
cin.get(name,ArSize);
cin.get();
cin.get(dessert,ArSize);
注意以上方法均返回一個(gè)cin對象,因此可以連續(xù)輸入。
通常getline使用起來簡單一點(diǎn),get使得檢查錯(cuò)誤更簡單些。
在混合輸入字符串和數(shù)字時(shí),經(jīng)常發(fā)生輸入空行的情況。比如cin輸入數(shù)字,此時(shí)cin不丟棄換行符留在輸入隊(duì)列中,這樣就會被下文的getline等讀到,從而變成空行。因此通常在輸入字符串前要用get檢查前面的輸入是否留有換行符。
二、循環(huán)字符輸入
1、cin>>,比如對于哨兵字符:
cin >> ch;
while (ch != '#')
{
cout << ch;
cin >> ch;
}
注意,cin讀取字符時(shí)忽略空格和換行符,不會賦予ch,故也不會回顯。
2、cin.get(ch)讀取每個(gè)字符,包括空格、制表和換行符。
注意cin.get()和cin.get(char)使用了函數(shù)重載,是一個(gè)函數(shù)的兩個(gè)版本。前者返回輸入中的下一個(gè)字符并作為int值返回,后者返回一個(gè)istream對象,故可以拼接。而cin.get(name,ArSize)用于接收字符串。
三、文件尾條件
1、用cin.get(char)方法:
while(cin.get(ch))
{..}
2、用cin.get()方法:
int ch;
while ((ch = cin.get()) != EOF)
{
cout.put(char(ch));
}
注意必需用int。EOF通常被定義為-1,但在有些系統(tǒng)中,char類型沒有符號,不可能為EOF。另外,在顯示時(shí)必需強(qiáng)制轉(zhuǎn)化為char類型。
新聞熱點(diǎn)
疑難解答
圖片精選