使用While语句从控制台读取

时间:2010-12-07 18:26:36

标签: c++ user-input while-loop

在下面的代码中,cin仅提取非空白字符,因此我可以轻松计算出用户输入的输入字符数,大写字母等,轻松忽略空白

#include "stdafx.h"
#include <iostream>
#include <string>
#include <fstream>
using namespace std;

int main( int argc, char** argv )
{
    int numberOfNonBlanks = 0;
    int numberOfUpperCase = 0;
    char c;
    while ( cin >> c )
    {
        ++numberOfNonBlanks;
        if ( ( c >= 'A' ) && ( c <= 'Z' ) )
        {
            ++numberOfUpperCase;
        }
    }
    cout << "Non blank characters: "  << numberOfNonBlanks << endl
         << "Upper case characters: " << numberOfUpperCase << endl;

    system( "PAUSE" );
}

我的问题是,no input是什么构成的?我的意思是使用while ( cin >> c )我收到用户输入字符并计算任何数量,但直到什么时候?什么时候会停止?什么才有资格作为no input的while循环退出?

谢谢,

1 个答案:

答案 0 :(得分:3)

直到你获得EOF角色。

如果您输入的是来自键盘的输入:

  • 在Windows上按ctrl ^ Z
  • 在Unix上点击ctrl ^ D

如果操作系统将文件重定向到标准输入,那么它将在文件末尾正常发生。