阅读 1816

C++ cin输入的多种方法详解

cin是C++编程语言中的标准输入流对象,即stream类的对象。cin主要用于从标准输入读取数据,这里的标准输入,指的是终端的键盘。接下来通过本文给大家分享C++ cin输入的几种方式,一起看看吧

目录
  • 前言

  • 一、cin

    • 1、cin >>

    • 2、cin.get()

      • 2.1 函数介绍

    • 3、getline()

    前言

    在C++中一般使用cin来进行交互,获取用户输入信息。cin是C++编程语言中的标准输入流对象,即stream类的对象。cin主要用于从标准输入读取数据,这里的标准输入,指的是终端的键盘。主要用到有cin >>cin.get()cin.getline()。cin读取数据也是从缓冲区中获取数据,缓冲区为空时,cin的成员函数会阻塞等待数据的到来,一旦缓冲区中有数据,就触发cin的成员函数去读取数据

    一、cin

    1、cin >>

    支持连续读取,以Tab、空格为分隔符,换行符为结束符号;

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    /*----------------------------------------------------------------------
         > File Name: cinDemo01.cpp
         > Author: Jxiepc
         > Mail: Jxiepc
         > Created Time: Mon 20 Sep 2021 10:09:55 AM CST
     ----------------------------------------------------------------------*/
      
    #include<iostream>
    #include<unistd.h>
    #include<cstring>
      
    int main(int argc, char *argv[]){
         std::string s;
         while(std::cin >> s){
             std::cout << s << std::endl;
         }                                                                                                              
         return 0;
    }

    cin>>从缓存区读取数据时,会自动忽略作为第一个字符存在的Tab、空格(Space)、换行,继续读取下一个字符,若缓存区为空,则等待。但是如果读取成功,字符后面的分隔符是残留在缓冲区的,cin>>不做处理。

    在这里插入图片描述

    2、cin.get()

    读取字符,包含空格

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    /*----------------------------------------------------------------------
        > File Name: cinGetDemo.cpp
        > Author: Jxiepc
        > Mail: Jxiepc
        > Created Time: Mon 20 Sep 2021 10:20:59 AM CST
    ----------------------------------------------------------------------*/
     
    #include<iostream>
    #include<unistd.h>
    #include<cstring>
    #include<fstream>
      
    void test02(){
     
        char str[256];
     
        std::cout << "Enter the name of an existing text file: ";
        std::cin.get (str,256);    // get c-string
         
        std::ifstream is(str);     // open file
           
        char c;
        while (is.get(c))          // loop getting single characters
            std::cout << c;
                       
        is.close();                // close file   
    }
     
    void test01(){
        char a,b;
        a = std::cin.get();
        std::cout << "a:" << a <<std::endl;
     
        std::cin.get(b);
        std::cout << "b:" << b << std::endl;
    }
     
    int main(int argc, char *argv[]){
        std::cout << "测试字符..." << std::endl;
     
        test01();
        std::cout << "--------------------------------------" << std::endl;
        //sleep(1);
        //std::cout << "测试get读取文件" << std::endl;
        //test02();
     
        return 0;
    }

    在这里插入图片描述
    在这里插入图片描述

    2.1 函数介绍

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    int get();
    istream& get(char&c);
    /*
    * @func:- 单个字符;
    *        - 不会忽略分隔符;
    *        - 成功读取的时候则返回字符的ASCII码值,遇到文件结束符时则返回EOF(-1);
    */
     
    istream& get (char* s, streamsize n);
    istream& get (char* s, streamsize n, char delim);
    /*
    * @func: - 从在流提取C-串,直到(n-1)字符已被提取或定界字符结束。('\n')或DELIM(自定义)。
    *        - 若找到定界符则不会从输入序列中提取,并保留作为从流中提取的下一个字符。
    *        - 如果n大于0,即使提取的是空字符串,也会自动添加一个空字符('\0')到写入序列。
    * @param s:接收字符串;
    * @param n:- 写入s的最大字符数(包括终止空字符);
    *           - 若小于2,则函数不提取任何字符并设置failbit;
    *           - Streamsize是一种带符号的整型。 
    * @param delim:自定义结束符。
    */
     
    istream& get(streambuf&sb);
    istream& get (streambuf& sb, char delim);
    /*
    * @func:- 从流中提取字符,并将其插入到输出序列流缓冲区对象控制的某人,('\n')或DELIM(自定义)。
    *        - 只有成功插入的字符才会从流中提取。分隔字符,还是最终未能插入的字符,保留在那里作为下一个要从流中提取的字符。 
    */

    3、getline()

    从标准输入设备读取一串字符串,并以指定的结束符结束。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    /*----------------------------------------------------------------------
        > File Name: cinGetlineDemo.cpp
        > Author: Jxiepc
        > Mail: Jxiepc
        > Created Time: Mon 20 Sep 2021 11:08:17 AM CST
    ----------------------------------------------------------------------*/
     
    #include<iostream>
    #include<unistd.h>
    #include<cstring>
      
    void test01(){
     
        char name[200];
          
        std::cout << "请输入:" ;
        std::cin.getline(name, 200);
        std::cout << name << std::endl;
    }
     
    int main(int argc, char *argv[]){
         
        test01();
     
        return 0;
    }

    在这里插入图片描述

    函数介绍

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    istream& getline (char* s, streamsize n );
    istream& getline (char* s, streamsize n, char delim );
     
    /*
    * @func:- 从流中提取字符作为未格式化的输入,并将它们以c字符串的形式存储到s中,直到提取的字符成为分隔符,或者有n个字符被写入s中(包括结束的空字符);
    *        - 如果到达文件结束符,该函数也将停止提取字符;
    *        - 若n大于0,提取到空串,也会自动添加一个空字符('\0')到写入序列。 
    * @param s:指向字符数组的指针,在该数组中提取的字符存储为c字符串;
    * @param n:写入s的最大字符数(包括终止空字符);
    * @param delim:结束符;
    */

    到此这篇关于C++ cin输入的几种方式的文章就介绍到这了

    原文链接:https://blog.csdn.net/weixin_45926547/article/details/120388333

    服务器评测 http://www.cncsto.com/ 

    服务器测评 http://www.cncsto.com/ 

    站长资源 https://www.cscnn.com/ 

    小鱼创业 https://www.237fa.com/ 


    文章分类
    后端
    版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
    相关推荐