處理一行輸入
C++的cin
和C語言的scanf
函式都以空格為分隔符,讀取輸入,每次讀到空格或者換行符就會停止。因此,當我們要輸出的一整行包含空格時,以上函式均無法得到正確的結果。
string s;
cin >> s;
cout << s;
輸入: hello world
輸出: hello
為了解決這個問題,我們可以使用getline
函式,該函式會讀取一行輸入,直到遇到換行符為止。
string s;
getline(cin, s);
cout << s;
輸入: hello world
輸出: hello world
處理若干個輸入
在我們遇到的部分題目中,我們需要處理若干個輸入,例如:
共有若干個整數需要輸入,你需要判斷每個整數是否為質數,如果是質數,輸出
Yes
,否則輸出No
。直到輸入0位置,表示輸入結束,且0不需要處理。
輸入:
2
3
4
0
輸出:
Yes
Yes
No
我們不知道有多少個整數需要輸入,因此我們需要使用迴圈來處理。
int n;
while (cin >> n && n != 0) {
// 處理n
}
在迴圈中,我們首先使用cin
讀取一個整數,然後判斷這個整數是否為0,如果不是0,就處理這個整數。如果這個整數是0,就跳出迴圈。
完整程式碼:
bool isprime(int n) {
if (n <= 1) return false;
for (int i = 2; i * i <= n; i++) {
if (n % i == 0) return false;
}
return true;
}
int main() {
int n;
while (cin >> n && n != 0) {
if (isprime(n)) {
cout << "Yes" << endl;
} else {
cout << "No" << endl;
}
}
}
處理若干行輸入
同樣的,當我們的輸入包含若干行時,我們同樣可以使用迴圈來處理。
最長的話:
Orange每次講話都喋喋不休,他總是說很多很多的話,以至於你無法記住他說的每一句話,你能記住他說的最長一句話嗎?
輸入:
Hello World!
Orange is a fruit.
How r u?
waibibabu.
ohhhhhhhhhhhhhhhhhh
輸出:
ohhhhhhhhhhhhhhhhhh
完整程式碼:
int main() {
string s;
string maxs;
while (getline(cin, s)) {
if (s.size() > maxs.size()) {
maxs = s;
}
}
cout << maxs;
}