处理一行输入
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;
}
标签:输出,题目,cout,处理,cin,整数,输入,若干
From: https://www.cnblogs.com/orangecodelog/p/18463384