提问人:GnarSickRad 提问时间:2/25/2019 最后编辑:ChristopheGnarSickRad 更新时间:4/20/2022 访问量:200
C++ While 循环不重新分配字符串值
C++ While loop not re-assigning string value
问:
我创建了一个程序来计算提供的字符串中的元音数量。它正确地计算元音,并在用户提供“y”或“Y”时重复。但是,当它重复时,它会自动将 “” 分配给我尝试使用的 C 字符串。
int main()
{
//Creating repeating decision
char answer = 'y';
while ((answer == 'y') || (answer == 'Y'))
{
//declaring our C-String
char ourString[81] = "Default";
//Prompting user for a string, storing it as a C-String
std::cout << "Please enter a string!(Less than 80 characters please.)\n";
std::cin.getline(ourString, 81);
//Using a loop to count the amount of vowels
int ourNum = 0;
int vowels = 0;
while (ourString[ourNum] != '\0')
{
switch (ourString[ourNum]) {
case 'a':
case 'A':
case 'e':
case 'E':
case 'i':
case 'I':
case 'o':
case 'O':
case 'u':
case 'U':
case 'y':
case 'Y':
vowels++;
ourNum++;
break;
default:
ourNum++;
break;
}
}
std::cout << "The numbers of vowels in: \"" << ourString << "\" is " << vowels << "!\n";
std::cout << "Do again? Please enter \"Y\" to repeat, or any other character to escape.";
std::cin >> answer;
}
}
任何方向将不胜感激。谢谢!
答:
6赞
Kays Kadhi
2/25/2019
#1
在写入“y”并按下回车按钮后,“y”和“y”都存储在输入缓冲区中,因此“y”转到答案字符,“/n”被视为下一个getline的输入。
有几种解决方案。您可以添加对 after 的调用。或者你可以把 yes 做成一个字符串,然后用 instead 代替 there。"/n"
cin.ignore()
cin >> yes
getline
operator>>
评论
switch
case 'Y': vowels++; default: ourNum++; break;
break
case
default