• 输入用法


    1、cin 2、cin.get() 3、cin.getline() 4、getline() 5、gets() 6、getchar()

    附:cin.ignore();cin.get()//跳过一个字符,例如不想要的回车,空格等字符

    1、cin>>        

    用法1:最基本,也是最常用的用法,输入一个数字:

    #include <iostream> using namespace std; main () { int a,b; cin>>a>>b; cout<<a+b<<endl; }  输入:2[回车]3[回车] 输出:5

    注意:>> 是会过滤掉不可见字符(如 空格 回车,TAB 等) cin>>noskipws>>input[j];//不想略过空白字符,那就使用 noskipws 流控制

    用法2:接受一个字符串,遇“空格”、“TAB”、“回车”都结束

    #include <iostream> using namespace std; main () { char a[20]; cin>>a; cout<<a<<endl; }  输入:jkljkljkl 输出:jkljkljkl  输入:jkljkl jkljkl       //遇空

    格结束 输出:jkljkl

    2、cin.get()

    用法1: cin.get(字符变量名)可以用来接收字符

    #include <iostream> using namespace std; main () { char ch; ch=cin.get();               //或者cin.get(ch); cout<<ch<<endl; }

    输入:jljkljkl 输出:j

    用法2:cin.get(字符数组名,接收字符数目)用来接收一行字符串,可以接收空格

    #include <iostream> using namespace std; main () { char a[20]; cin.get(a,20); //cin.clear(); //cin.get(); cout<<a<<endl; }

    输入:jkl jkl jkl 输出:jkl jkl jkl

    输入:abcdeabcdeabcdeabcdeabcde (输入25个字符) 输出:abcdeabcdeabcdeabcd              (接收19个字符+1个'')

    用法3:cin.get(无参数)没有参数主要是用于舍弃输入流中的不需要的字符,或者舍弃回车,弥补cin.get(字符数组名,接收字符数目)的不足.

    这个我还不知道怎么用,知道的前辈请赐教;

    3、cin.getline()   // 接受一个字符串,可以接收空格并输出

    #include <iostream> using namespace std; main () { char m[20]; cin.getline(m,5); cout<<m<<endl; }

    输入:jkljkljkl 输出:jklj

    接受5个字符到m中,其中最后一个为'',所以只看到4个字符输出;

    如果把5改成20: 输入:jkljkljkl 输出:jkljkljkl

    输入:jklf fjlsjf fjsdklf 输出:jklf fjlsjf fjsdklf

    //延伸: //cin.getline()实际上有三个参数,cin.getline(接受字符串的看哦那间m,接受个数5,结束字符) //当第三个参数省略时,系统默认为'' //如果将例子中cin.getline()改为cin.getline(m,5,'a');当输入jlkjkljkl时输出jklj,输入jkaljkljkl时,输出jk

    当用在多维数组中的时候,也可以用cin.getline(m[i],20)之类的用法:

    #include<iostream> #include<string> using namespace std;

    main () { char m[3][20]; for(int i=0;i<3;i++) { cout<<" 请输入第"<<i+1<<"个字符串:"<<endl; cin.getline(m[i],20); }

    cout<<endl; for(int j=0;j<3;j++) cout<<"输出m["<<j<<"]的值:"<<m[j]<<endl;

    }

    请输入第1个字符串: kskr1

    请输入第2个字符串: kskr2

    请输入第3个字符串: kskr3

    输出m[0]的值:kskr1 输出m[1]的值:kskr2 输出m[2]的值:kskr3

    4、getline()     // 接受一个字符串,可以接收空格并输出,需包含“#include<string>”

    #include<iostream> #include<string> using namespace std; main () { string str; getline(cin,str); cout<<str<<endl; }

    输入:jkljkljkl 输出:jkljkljkl

    输入:jkl jfksldfj jklsjfl 输出:jkl jfksldfj jklsjfl

    和cin.getline()类似,但是cin.getline()属于istream流,而getline()属于string流,是不一样的两个函数

    5、【1】函数:gets   【2】头文件:stdio.h   【3】功能:从stdin流中读取字符串,直至接受到换行符或EOF时停止,并将读取的结果存放在str指针所指向的字符数组中。换行符不作为读取串的内容,读取的换行符被转换为null值,并由此来结束字符串。   【4】注意:本函数可以无限读取,不会判断上限,所以程序员应该确保str的空间足够大,以便在执行读操作时不发生溢出。   【5】示例:   #include"stdio.h"   void main()   {   char str1[5];   gets(str1);   printf("%s ",str1);   } 6、1.从缓冲区读走一个字符,相当于清除缓冲区

    2.前面的scanf()在读取输入时会在缓冲区中留下一个字符' '(输入完s[i]的值后按回车键所致),所以如果不在此加一个getchar()把这个回车符取走的话,gets()就不会等待从键盘键入字符,而是会直接取走这个“无用的”回车符,从而导致读取有误

    3. getchar()是在输入缓冲区顺序读入一个字符(包括空格、回车和Tab) getchar()使用不方便,解决方法: (1)使用下面的语句清除回车: while(getchar()!=' '); (2)用getche()或getch()代替getchar(),其作用是从键盘读入一个字符(不用按回车),注意要包含头文件<conio.h>

    4.【转】 getchar()是stdio.h中的库函数,它的作用是从stdin流中读入一个字符,也就是说,如果stdin有数据的话不用输入它就可以直接读取了,第一次getchar()时,确实需要人工的输入,但是如果你输了多个字符,以后的getchar()再执行时就会直接从缓冲区中读取了。 实际上是 输入设备->内存缓冲区->程序getchar  你按的键是放进缓冲区了,然后供程序getchar  你有没有试过按住很多键然后等一会儿会滴滴滴滴响,就是缓冲区满了,你后头按的键没有存进缓冲区.  键盘输入的字符都存到缓冲区内,一旦键入回车,getchar就进入缓冲区读取字符,一次只返回第一个字符作为getchar函数的值,如果有循环或足够多的getchar语句,就会依次读出缓冲区内的所有字符直到' '.要理解这一点,之所以你输入的一系列字符被依次读出来,是因为循环的作用使得反复利用getchar在缓冲区里读取字符,而不是getchar可以读取多个字符,事实上getchar每次只能读取一个字符.如果需要取消' '的影响,可以用getchar();来清除,这里getchar();只是取得了' '但是并没有赋给任何字符变量,所以不会有影响,相当于清除了这个字符.还要注意的是这里你在键盘上输入ssss看到的回显正是来自于getchar的作用,如果用getch就看不到你输入了什么.

  • 相关阅读:
    Linux下Kafka单机安装配置
    MySQL30条规范解读
    MySQL联合索引最左匹配范例
    Percona Data Recovery Tool 单表恢复
    SQL中的where条件,在数据库中提取与应用浅析
    【leetcode】908. Smallest Range I
    【leetcode】909. Snakes and Ladders
    【leetcode】910. Smallest Range II
    【leetcode】395. Longest Substring with At Least K Repeating Characters
    【leetcode】907. Sum of Subarray Minimums
  • 原文地址:https://www.cnblogs.com/shutter/p/4739521.html
Copyright © 2020-2023  润新知