while(cin>> ch)是什么意思?

时间:2015-09-15 10:16:10

标签: c++

unsigned int aCnt=0, eCnt=0, iCnt=0, oCnt=0, uCnt=0;
char ch;
while (std::cin >> ch)
    switch (ch){
        case 'a':
            ++aCnt;
            break;
        case 'e':
            ++eCnt;
            break;
        case 'i':
            ++iCnt;
            break;
        case 'o':
            ++oCnt;
            break;
        case 'u':
            ++uCnt;
            break;
    }

while (std::cin >> ch)是什么意思?我输入了一封信,节目没有显示任何内容。

2 个答案:

答案 0 :(得分:0)

这是糟糕的样式代码。 它将工作并计算切换中的所有字符。 这是我的版本,可以帮助您理解:

unsigned int aCnt = 0, eCnt = 0, iCnt = 0, oCnt = 0, uCnt = 0;
char ch;
while (std::cin >> ch)
{
    switch (ch) {
    case 'a':
        ++aCnt;
        break;
    case 'e':
        ++eCnt;
        break;
    case 'i':
        ++iCnt;
        break;
    case 'o':
        ++oCnt;
        break;
    case 'u':
        ++uCnt;
        break;
    case '-':
        goto end;
    }
}
end:
cout << aCnt << "\t" << eCnt << "\t" << iCnt << "\t" << oCnt << "\t" << uCnt;

所以放&#39; - &#39;然后按Enter键查看结果。

这是更常见的方法

unsigned int aCnt =0, eCnt = 0, iCnt = 0, oCnt = 0, uCnt = 0;
char ch;
bool getCharacter = true;
while (getCharacter)
{
    std::cin >> ch;
    switch (ch) {
    case 'a':
        ++aCnt;
        break;
    case 'e':
        ++eCnt;
        break;
    case 'i':
        ++iCnt;
        break;
    case 'o':
        ++oCnt;
        break;
    case 'u':
        ++uCnt;
        break;
    case '-':
        getCharacter = false;
        break;
    }
}
cout << aCnt << "\t" << eCnt << "\t" << iCnt << "\t" << oCnt << "\t" << uCnt;

答案 1 :(得分:0)

cin>>ch表示您输入的内容为变量ch while(cin>>ch)表示执行输入的循环 没有cout,因此您无法观看任何内容。

您可以添加以下代码:

switch (ch){
    case 'a':
        ++aCnt;
        cout<<aCnt<<endl;//added
        break;
    case 'e':
        ++eCnt;
        cout<<eCnt<<endl;//added
        break;
    case 'i':
        ++iCnt;
        cout<<iCnt<<endl;//added
        break;
    case 'o':
        ++oCnt;
        cout<<oCnt<<endl;//added
        break;
    case 'u':
        ++uCnt;
        cout<<uCnt<<endl;//added
        break;
}

每次输入&#39; a,e,i,o,u&#39;

时,您都会看到该号码