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