![](/img/trans.png)
[英]how to pass a string from 2nd character onwards as parameter in the function for recursion with constraint that data tye is String in function?
[英]String printed from the 2nd letter
此代碼的目的是驗證名稱並將每個單詞的第一個字母大寫。 我的意思是,如果插入的名稱包含Invalid_Name
內的字符之一,則它無效。
它工作正常,但是當我嘗試打印該名稱時,它從第二個字母開始。 只需看下面的代碼(對不起大小):
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;
}
如果我插入名稱 "edward kenway" 它會打印出"Dward Kenway"
,即使我寫i = 0;
在循環之前。
為什么?
*************編輯*************
如果我自第一次輸入以來以正確的方式打印名稱,它就可以工作。 否則,它給了我這個問題。
我解決了這個問題,只是將“cin.sync()”放在“getline()”之前。 希望可以幫助某人。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.