zoukankan      html  css  js  c++  java
  • 标准输入的原理:cin与scanf

    1.cin 该方法


    1)假设cin读取整数。会自己主动忽略换行和空格。遇到文件结束标记。cin  >> a返回的数false


        int a;
        while(cin >> a){ 
            cout << a <<endl;   
        }   
        return 0;
    eg:1, 2, 3
    1 2 3
    1 a 2
    a 1 2
    注意:cin读取到'a'字符的时候,假设是cin> (int);那么此时cin返回false, 同一时候读到变量a中的整数是0。假设是 ,那么将自己主动忽略;


    2) cin读取字符串。会将 作为字符串的切割符
    string a;
    while(cin >> a){
    cout << a;
    }
    注意:空格将被当作切割符,不会被存储到a之中;另外,我们在标准输入中写" "是没有换行的效果的,这样被存储的是两个字符;而我们用键盘的回车键那么存储的将是" "字符。


    3)cin  读取字符串 char *
    读取完成,会自己主动将 转换成


    4)假设遇到文件结束。那么也将返回false


    2.scanf的处理方式


    对标准输入的理解:默认情况下,scanf 是从标准输入中读取字符。然后进行相关转化;假设是空格或者换行,直接跳过,假设不符合格式化要求,那么scanf不处理同一时候也不减小缓冲区中的信息。




    1)读取整数:
        int a=12;
        while( scanf("%d", &a)!=EOF ){
            cout << a <<endl;                                                                                                                        
        }  
    如此。假设我们输入'a'。那么将陷入死循环


    2)读整数scanf("%d,%d", &a, &b)是可行的。可是读取字符串scanf("%s,%s")是不可行的


    对输入过程的理解:输入过程包括两个部分。第一部分须要我们将数据送到键盘缓冲区。这个过程是依照行缓冲的;
    第二个过程,是依照格式化要求从缓冲区中读取数据到对应内存空间;
    3)混合输入


        int a=12, b=12;
        char c='C';
        cout << scanf("%d%d%c", &a, &b , &c);

    假设我们输入"123 a1", 那么将输处1。 b和c都没有被赋值。也就是说scanf并不能保证后面的參数都被正确赋值


    3.fgets的处理方式

    首先,gets和fgets都能处理字符串的输入问题,并且都能进入空格。除了那个,fgets不转换 成为.

    版权声明:本文博客原创文章,博客,未经同意,不得转载。

  • 相关阅读:
    python框架---->APScheduler的使用
    python基础---->python的使用(六)
    python爬虫---->scrapy的使用(一)
    python基础---->python的使用(四)
    python基础---->python的使用(一)
    网页mp3播放代码
    js打开没有地址栏下拉条新窗口
    php全面获取url地址栏及各种参数
    php分页类
    php生成随机密码的几种方法
  • 原文地址:https://www.cnblogs.com/hrhguanli/p/4652092.html
Copyright © 2011-2022 走看看