C ++ While循环启动太早

时间:2014-09-13 14:00:14

标签: c++

我试图模仿一个while循环来计算一定数量的元音中的元音。第一个输入是要输入的行的总数。然而,这开始循环并输出0.这意味着它只计算7行而不是8.我可以通过将count设置为-1来解决这个问题,但它仍会输出随机零。我有没有办法改变循环来解释这个问题?

#include <iostream>
#include <cstring>
using namespace std;


int main() {

    string sentence;
    int count;
    int total;
    int length;
    int lengthcount;
    int output;
    output = 0;
    length = 0;
    count = 0;
    total = 0;
    lengthcount = 0;
    cin >> total;

    while (total != count){
        getline(cin, sentence);
        length = sentence.length();
        while (length != lengthcount){
            switch(sentence[lengthcount]){
                case 'a':
                    ++output;
                    break;
                case 'e':
                    ++output;
                    break;
                case 'i':
                    ++output;
                    break;
                case 'o':
                    ++output;
                    break;
                case 'u':
                    ++output; 
                    break;
                case 'y':
                    ++output;
                    break;

            }
            ++lengthcount;
        }
        cout << output << " ";
        ++count;
        lengthcount = 0;
        output = 0;
    }

return 0;
}

1 个答案:

答案 0 :(得分:2)

您可以在读取行本身时读取行数。

string totalstring;
getline(cin, totalstring);    
total = stoi(totalstring);

这样,换行字符将被消耗。