2014-10-27 2 views
-3

Для моего задания мы должны взять несколько строк ввода с клавиатуры. Например:C++ с несколькими линиями ввода с клавиатуры

Пожалуйста, введите ваше имя: (. Это статический Всегда 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; 
     } 
    } 
} 
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 
} 

Вы не предоставил в вашем вопросе достаточно деталей .. поэтому приведенный выше код не может полностью соответствовать вашему требования!