对于我的作业,我们假设从键盘输入几行输入。例如:
请输入您的姓名:(这是静态的。总是1输入) 贾斯汀
请输入名称:(这可以是任意数量的输入,最小为1)
乔
鲍勃
约翰
杰克逊
最后,我想将开头输入的名称与之后输入的所有名称进行比较。我尝试使用getline和cin,但这似乎只有在我知道我希望输入的确切名称数量时才有效。任何人都可以指导我正确的方向。谢谢
答案 0 :(得分:0)
试试这个
void read_lines( std::istream& in, std::list< std::string >& list ) {
while( true ) {
std::string line = "";
std::getline( in, line );
if( line != "" ) {
list.push_back( line );
} else {
break;
}
}
}
答案 1 :(得分:0)
您应该添加一些粗略的代码,显示您在完成作业时所做的努力。 但是,我将为您提供一些初始的天真的代码(请阅读内部的评论!):
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main()
{
string name, temp;
vector<string> names; // this is just one of the possible container that you can use
bool result = false; // flag used to store the result of the matching operation (default: false)
// first we ask the user to enter his/her name
cout << "Please enter your name:" <<endl;
cin >> name;
// then we need something a little bit more complicated to look for variable number of names
cout << "Please enter the names:" <<endl;
while(cin)
{
cin >> temp;
names.push_back(temp);
}
// This for-loop is used to go through all the input names for good-match with the user name
for( int i = 0; i < names.size(); i++ )
{
temp = names.front();
if (name == temp) result = true; // change the flag variable only in case of match
}
cout << "Valid match: " << (result?"yes":"no"); // ternary operator
}
您没有在问题中提供足够的详细信息..因此上述代码可能不完全符合您的要求!