1 cin
讀入數字、字符、字符串等,讀到空格符、製表符、換行符停止讀入。
2 getline(istream &is , string &str , char delim)
讀入帶空格、製表符等字符的字符串用getline,其原型爲如下:
istream& getline ( istream &is , string &str , char delim );
(1) istream &is :輸入流,例如cin;
(2) string &str :將輸入流讀入字符串str中;
(3) char delim :讀到delim字符停止讀入,delim可省略,在不設置的情況下系統默認值爲爲'\n',即回車換行符,遇到回車後停止讀入。
ps: cin >> str後接着getline(cin, str)語句時,會導致無法通過getline讀入str字符串,原因是:當前面通過cin讀取一個字符串時,需輸入一個字符串並按回車,此時getline(cin,str)讀到該回車符,就判斷結束了,導致字符串str無法讀入。
解決方法:在cin >> str 語句後加上cin.ignore() 語句,用於忽略cin讀入數據後的回車符。
3 getchar()
從輸入緩衝區讀取數據,只讀一個字節,遇到換行符停止讀取,可讀取空格符。
ps: 如果通過getchar()讀取數據後,在程序中第二次調用getchar()函數讀取數據時,讀取的是換行符,原因是:此時輸入緩衝區中回車鍵的數據沒有被讀出,第二個getchar()函數讀出的是回車符。
解決方法:在兩個getchar()語句中間加上cin.ignore() 語句,用於忽略上一個getchar()讀入數據後的回車符。
例題
輸入字符串s和字符c,要求去掉s中所有的c字符,並輸出結果。
輸入描述
測試數據有多組,每組輸入字符串s和字符c。
輸出描述
對於每組輸入,輸出去除c字符後的結果。
輸入樣例
goaod
a
blue_print
_
輸出樣例
good
blueprint
#include <iostream>
using namespace std;
int main() {
string str;
char ch;
while(getline(cin, str)) {
ch = getchar();
cin.ignore();
for (auto c : str) {
if(c != ch) {
cout << c;
}
}
cout << endl;
}
return 0;
}