ошибка сегментации в процессе cin - PullRequest
0 голосов
/ 26 декабря 2018
void Room::join(){
 try{
    check_input_arguments();
    bool enter_not_pressed = true;
    string name;
    char c;
    int counter = 0 ;
    while(enter_not_pressed){
        cin >> name ;
        counter ++ ;
        name_of_players.push_back(name);
        cin.get(c);
        enter_not_pressed = (c!='\n');
        cout << counter;
       }
    if(name_of_players.size() > get_num_of_roles()){
        for(int i=0 ; i < counter ; i++)
            name_of_players.pop_back();
        throw too_many_users();
       }
    if(name_of_players.size() == get_num_of_roles()){
        give_random_roles();
       }
    }
   catch(few_arguments ex){
        cerr << "You didn't enter enough arguments!" << endl;
    }
   catch(too_many_users ex){
    cerr << "many users" << endl;
    }
}

Я пишу этот метод для класса Room, когда я хочу получить количество строк, эквивалентное get_num_of_roles (), с которым я сталкиваюсь с ошибкой сегментации, но этот код работает для числа строк больше, чем get_num_of_roles (print)много "пользователей) и меньше, чем get_num_of_roles (ничего не делать).это функция check_input_arguments ()

void check_input_arguments(){
char c;
cin.get(c);
if(c == '\n')
    throw few_arguments();
}

Помогите мне, пожалуйста, спасибо, ребята!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...