在整数后获取多个字符串输入?
Getting multiple string input after integer?
我遇到了这个编程问题,我需要在输入一个整数后输入多个字符串。
该字符串还包括空格。
//程序
#include <iostream>
#include<string.h>
using namespace std;
int main() {
int t;
cin>>t;
while(t--){
string s;
getline(cin,s,'\n'); //also used cin>>s;
cout<<"$"<<s<<"$"<<'\n';
}
return 0;
}
输入
2
Hello World
Hello Whosebug
预期输出
Hello World
Hello Whosebug
程序的输出
$$$Hello World$
这里的问题是 std::cin >> t;
不会消耗输入中出现的 \n
。这就是为什么第一次调用 std::getline
会读取所有内容,直到下一个 \n
立即出现(这样 s
在第一次迭代期间是空字符串)。
您可以通过两种方式解决此问题。不碰代码,调整输入为
2 Hello World
Hello Whosebug
但我想这不是本意。另一种方法是告诉 std::cin
忽略下一个换行符之前的所有内容,例如
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
在遇到下一个 \n
之前,它可能会吃掉大量字符。对于上面的编译,你需要 #include <limits>
.
我遇到了这个编程问题,我需要在输入一个整数后输入多个字符串。 该字符串还包括空格。
//程序
#include <iostream>
#include<string.h>
using namespace std;
int main() {
int t;
cin>>t;
while(t--){
string s;
getline(cin,s,'\n'); //also used cin>>s;
cout<<"$"<<s<<"$"<<'\n';
}
return 0;
}
输入
2
Hello World
Hello Whosebug
预期输出
Hello World
Hello Whosebug
程序的输出
$$$Hello World$
这里的问题是 std::cin >> t;
不会消耗输入中出现的 \n
。这就是为什么第一次调用 std::getline
会读取所有内容,直到下一个 \n
立即出现(这样 s
在第一次迭代期间是空字符串)。
您可以通过两种方式解决此问题。不碰代码,调整输入为
2 Hello World
Hello Whosebug
但我想这不是本意。另一种方法是告诉 std::cin
忽略下一个换行符之前的所有内容,例如
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
在遇到下一个 \n
之前,它可能会吃掉大量字符。对于上面的编译,你需要 #include <limits>
.