C++从键盘输入文件结束符

        当咱们使用一个istream对象做为条件时,其效果是检测流的状态。若是流是有效的,即流未遇到错误,那么检测成功。当遇到文件结束符,或遇到一个无效输入时(例如须要将输入读到一个int变量中,但实际从键盘输入的是字符),istream对象的状态会变成无效。处于无效的istream对象会是条件变为假。ios

       当从键盘向程序输入数据时,对于如何指出文件结束符,不一样的操做系统有不一样的实现。在Windows平台中,输入文件结束符的方法是:按Ctrl+z,而后按Enter。在Unix或Linux下是按Ctrl+d,无需Enter,固然,因为当你输入Ctrl+d后,它仍然停留在系统的输入缓冲区中,因此你仍是须要使用一个Enter使其生效。下面是几个关于该用法的示例:windows


#include <iostream>
#include <string>测试

using namespace std;
/*
测试标准输入cin和文件结束符
测试平台:Windows
*/
int test_string_one();
int test_string_two();
int test_string_three();spa

int main()
{
    //test_string_one();
    test_string_two();
}
int test_string_one() //第一个程序:输入的是整数
{
    int num;
    while(cin>>num)
        cout << num << " ";
    return 0;
}
/*
输入:1 2 3 4 5 Ctrl+d Enter
输出:1 2 3 4 5
此处之因此循环中止,是由于遇到一个无效输入(Ctrl+d),而不是遇到了文件结束符。
由于在windows平台,结束符是Ctrl+z,而后按Enter。
例如输入:1 2 3 4 5 a Enter
输出还是:1 2 3 4 5
固然若是该测试用例用于Linux下,那么因为系统的结束符是Ctrl+d,因此虽然输出同样,
可是之因此循环中止,是由于到达了文件结束,而不是获得了一个无效输入。
*/操作系统


int test_string_two() //第二个程序:输入的是字符串
{
    string word;
    while(cin>>word)
        cout << word << " ";
    return 0;
}
/*
输入:hello world Ctrl+z 回车
输出:hello world
此处之因此循环中止,是由于遇到一个文件结束符。
由于在windows平台,结束符是Ctrl+z,而后按Enter。
*/
对象

相关文章
相关标签/搜索