zoukankan      html  css  js  c++  java
  • cin,scanf,gets,getline,cin.getline对于字符串的输入

     1 //cin: 
     2 #include<iostream>
     3 #include<cstdio>
     4 #include<cmath>
     5 #include<cstring>
     6 #include<algorithm>
     7 using namespace std;
     8 int main()
     9 {
    10   char a[20];
    11   cin>>a;
    12   cout<<a<<endl;
    13 }

    cin只接收一个字符串,遇空格,回车就结束
    输入:jkljkljkl
    输出:jkljkljkl

    输入:jkljkl jkljkl //遇空格结束
    输出:jkljkl

     1 //cin.getline : 
     2 #include<iostream>
     3 #include<cstdio>
     4 #include<cmath>
     5 #include<cstring>
     6 #include<algorithm>
     7 using namespace std;
     8 int main()
     9 {
    10   char a[20];
    11   cin.getline(a,5);
    12   cout<<a<<endl;
    13 }

    <iostream>
    接收一个字符串,可以接收空格并输出
    输入:jkljkljkl
    输出:jklj

    输入:ab fvtd
    输出:ab f

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

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

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

    延伸:
    1、cin.getline()实际上有三个参数,
    cin.getline
    (接收字符串的变量,接收字符个数,结束字符)
    2、当第三个参数省略时,系统默认为''
    3、如果将例子中cin.getline()
    改为cin.getline(a,5,'a');
    当输入jlkjkljkl时
    输出jklj,
    输入jkaljkljkl时,
    输出jk




    输入:
    qwertyuiop
    qwert 123 456
    isabvgfewrjnv kjsbd

    输出:
    qwertyuiop //m[0]
    qwert 123 456 //m[1]
    isabvgfewrjnv kjsbd //m[2]

     1 cin.getline 在多维数组里的用法:
     2 #include<iostream>
     3 #include<cstdio>
     4 #include<cmath>
     5 #include<cstring>
     6 using namespace std;
     7 int main()
     8 {
     9   char a[3][20]; //大概3是限制字符串个数的
    10            //20是限制每个字符串长度的 。大概吧。
    11   for(int i=0;i<3;i++) 
    12            //这个地方必须从0开始 
    13   cin.getline (a[i],20);
    14   for(int i=0;i<3;i++)
    15   cout<<endl<<a[i];
    16   return 0;
    17 } 




    <cstring>
    接收一个字符串,可以接收空格并输出。
    输入:jkljkljkl
    输出:jkljkljkl

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

     1 getline: 
     2 #include<iostream>
     3 #include<cstdio>
     4 #include<cstring>
     5 #include<cmath>
     6 #include<algorithm>
     7 using namespace std;
     8 int main()
     9 {
    10   string a;
    11   getline(cin,a);
    12   cout<<a<<endl;
    13 }
     1 gets():
     2 #include<iostream>
     3 #include<cstdio>
     4 #include<cmath>
     5 #include<cstring>
     6 using namespace std;
     7 int main()
     8 {
     9   char a[22];
    10   gets(a);
    11   printf("%s",a);
    12 }


    <cstdio>
    gets可以读空格,但不读回车
    字符串接收结束后自动加''。
    (应该是用' '代替了'')
    输入: EAFWEG GEWsdv( )
    输出: EAFWEG GEWsdv

     1 scanf():
     2 #include<iostream>
     3 #include<cstdio>
     4 #include<cmath>
     5 #include<cstring>
     6 using namespace std;
     7 int main()
     8 {
     9   char a[22];
    10   scanf("%s",a);
    11   printf("%s",a);    
    12 }


    <cstdio>
    不接收空格,回车
    输入:
    wrbe awegfre
    输出:
    wrbe

     

    getchar():
    只接收一个字符(第一个)

    参考: http://www.cnblogs.com/flatfoosie/archive/2010/12/22/1914055.html

  • 相关阅读:
    Ubuntu18.04安装NAVIDIA驱动
    ubuntu 设置root用户密码并实现root用户登录
    配置ubuntu允许远程SSH连接
    Centos7安装yum命令
    NVDIA往期在线研讨会地址 论坛提问地址
    二进制安装单master节点测试环境k8s集群
    kubeadm初始化k8s-延长证书过期时间
    kubeadm初始化k8s-删除控制节点-重新把控制节点加入集群步骤
    kubeadm安装的多master节点的k8s高可用集群
    二进制安装多master节点的k8s集群
  • 原文地址:https://www.cnblogs.com/Mary-Sue/p/8678462.html
Copyright © 2011-2022 走看看