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] != '[=10=]')
        {
            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;

    }

}

如有任何指示,我们将不胜感激。谢谢!

在写入“y”并按下回车键后,“y”和 "/n" 都存储在输入缓冲区中,因此“y”进入答案字符,而“/n”被认为是下一个 getline 的输入。 有一些解决方案。您可以在 cin >> yes 之后添加对 cin.ignore() 的调用。或者您可以将 yes 设为一个字符串,然后在此处使用 getline 而不是 operator>>