Строка напечатана из 2-й буквы - PullRequest
0 голосов
/ 29 апреля 2020

Цель этого кода - подтвердить имя и напечатать каждое слово с заглавной 1-й буквой. Я имею в виду, если введенное имя содержит один из символов, которые находятся внутри Invalid_Name, это не валидно.

Это работает правильно, но когда я пытаюсь напечатать это имя, оно начинается со 2-й буквы. Просто посмотрите на код ниже (извините за размер):

 void validate_charName()
{
    int i = 0;
    int check = 0;
    string Invalid_Name = "1234567890'!\"£$%&/()=?^*-+<>-.,_:;[]{}°@§";
    bool name_is_valide = true;

    // Validate the character's name
    while(name_is_valide)
    {
        bool invalid_name = false;
        name_is_valide = true;

        cout<< "\nWhat's the name of your character? " << endl;
        cin.ignore();
        getline(cin, char_name);

        for(int i = 0; i < char_name.length(); i++)
        {
            for(int j = 0; j < Invalid_Name.length(); j++)
                {
                    if(char_name[i] == Invalid_Name[j])
                        invalid_name = true;
                }
        }
        if(invalid_name)
            cout<< "The name must contains only letters!" << endl;
        else
            name_is_valide = false;

    }


    while(char_name[i])
    {
        if(check == 0)
        {
            char_name[i] = toupper(char_name[i]);
            check = 1;
        }
        else if(isspace(char_name[i]))
            check = 0;
        i++;
    }
        sleepcp(1000);
        cout << "               ******Your character's name is " + char_name + "******                " << endl;
}

Если я вставлю имя "Эдвард Кенуэй", он напечатает "Dward Kenway", даже если я напишу i = 0; до l oop.

Почему?

************* РЕДАКТИРОВАТЬ *************

Если я печатаю имя правильно с момента первого ввода, это работает. В противном случае, это дает мне эту проблему.

1 Ответ

0 голосов
/ 29 апреля 2020

Я решил это, просто поместив "cin.syn c ()" перед "getline ()". Надеюсь, что это может кому-то помочь.

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