Цель этого кода - подтвердить имя и напечатать каждое слово с заглавной 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.
Почему?
************* РЕДАКТИРОВАТЬ *************
Если я печатаю имя правильно с момента первого ввода, это работает. В противном случае, это дает мне эту проблему.