C++中getline()、gets()等函数的⽤法详解⽬录字符串函数gets怎么重新定义
1、cin>>
2、()
3、line() // 接受⼀个字符串,可以接收空格并输出
4、getline() // 接受⼀个字符串,可以接收空格并输出,需包含“#include”
在学习C++的过程中,经常会遇到输⼊输出的问题,以下总结⼀下下⾯⼏个函数的⽤法:
1)、cin
2)、()
3)、line()
4)、getline()
5)、gets()
1、cin>>
  ⽤法1:最基本,也是最常⽤的⽤法,输⼊⼀个数字:
 #include <iostream>
  using namespace std;
  main ()
  {
  int a,b;
  cin>>a>>b;
  cout<<a+b<<endl;
  }
  输⼊:2[回车]3[回车]
  输出:5
  ⽤法2:接受⼀个字符串,遇“空格”、“TAB”、“回车”都结束
#include <iostream>
  using namespace std;
  main ()
  {
  char a[20];
  cin>>a;
  cout<<a<<endl;
  }
  输⼊:jkljkljkl
  输出:jkljkljkl
  输⼊:jkljkl jkljkl //遇空格结束
  输出:jkljkl   
2、()
  ⽤法1: (字符变量名)可以⽤来接收字符
#include <iostream>
  using namespace std;
  main ()
  {
  char ch;
  (); //或者(ch);
  cout<<ch<<endl;
  }
  输⼊:jljkljkl
  输出:j
  ⽤法2:(字符数组名,接收字符数⽬)⽤来接收⼀⾏字符串,可以接收空格
#include <iostream>
  using namespace std;
  main ()
  {
  char a[20];
  (a,20);
  cout<<a<<endl;
  }
  输⼊:jkl jkl jkl
  输出:jkl jkl jkl
  输⼊:abcdeabcdeabcdeabcdeabcde (输⼊25个字符)
  输出:abcdeabcdeabcdeabcd (接收19个字符+1个'\0')
  ⽤法3:(⽆参数)没有参数主要是⽤于舍弃输⼊流中的不需要的字符,或者舍弃回车,弥补(字符数组名,接收字符数⽬)的不⾜.
3、line() // 接受⼀个字符串,可以接收空格并输出
  #include <iostream>
  using namespace std;
  main ()
  {
  char m[20];
  line(m,5);
  cout<<m<<endl;
  }
  输⼊:jkljkljkl
  输出:jklj
接受5个字符到m中,其中最后⼀个为'\0',所以只看到4个字符输出;
  如果把5改成20:
  输⼊:jkljkljkl
  输出:jkljkljkl
  输⼊:jklf fjlsjf fjsdklf
  输出:jklf fjlsjf fjsdklf
//延伸:
  //line()实际上有三个参数,line(接受字符串的看哦那间m,接受个数5,结束字符)
  //当第三个参数省略时,系统默认为'\0'
  //如果将例⼦中line()改为line(m,5,'a');当输⼊jlkjkljkl时输出jklj,输⼊jkaljkljkl时,输出jk
  当⽤在多维数组中的时候,也可以⽤line(m[i],20)之类的⽤法:
#include<iostream>
  #include<string>
  using namespace std;
  main ()
  {
  char m[3][20];
  for(int i=0;i<3;i++)
  {
  cout<<"\n请输⼊第"<<i+1<<"个字符串:"<<endl;
  line(m[i],20);
  }
  cout<<endl;
  for(int j=0;j<3;j++)
  cout<<"输出m["<<j<<"]的值:"<<m[j]<<endl;
  }
 请输⼊第1个字符串:
  kskr1
  请输⼊第2个字符串:
  kskr2
  请输⼊第3个字符串:
  kskr3
4、getline() // 接受⼀个字符串,可以接收空格并输出,需包含“#include” 
#include<iostream>
  #include<string>
  using namespace std;
  main ()
  {
  string str;
  getline(cin,str);
  cout<<str<<endl;
  }
  输⼊:jkljkljkl
  输出:jkljkljkl
  输⼊:jkl jfksldfj jklsjfl
  输出:jkl jfksldfj jklsjfl
  和line()类似,但是line()属于istream流,⽽getline()属于string流,是不⼀样的两个函数
5、gets() // 接受⼀个字符串,可以接收空格并输出,需包含“#include”
 #include<iostream>
  #include<string>
  using namespace std;
  main ()
  {
  char m[20];
  gets(m);  //不能写成m=gets();
  cout<<m<<endl;
  }
  输⼊:jkljkljkl
  输出:jkljkljkl
  输⼊:jkl jkl jkl
  输出:jkl jkl jkl
  类似line()⾥⾯的⼀个例⼦,gets()同样可以⽤在多维数组⾥⾯:
#include<iostream>
  #include<string>
  using namespace std;
  main ()
  {
  char m[3][20];
  for(int i=0;i<3;i++)
  {
  cout<<"\n请输⼊第"<<i+1<<"个字符串:"<<endl;
  gets(m[i]);
  }
  cout<<endl;
  for(int j=0;j<3;j++)
  cout<<"输出m["<<j<<"]的值:"<<m[j]<<endl;
  }
  请输⼊第1个字符串:
  kskr1
  请输⼊第2个字符串:
  kskr2
  请输⼊第3个字符串:
  kskr3
  ⾃我感觉gets()和line()的⽤法很类似,只不过line()多⼀个参数罢了;
  这⾥顺带说明⼀下,对于本⽂中的这个kskr1,kskr2,kskr3的例⼦,对于cin>>也可以适⽤,原因是这⾥输⼊的没有空格,如果输⼊了空格,⽐如“ks kr jkl[回车]”那么cin就会已经接收到3个字符串,“ks,kr,jkl”;再如“kskr 1[回车]kskr 2[回车]”,那么则接收“kskr,1,kskr”;这不是我们所要的结果!⽽line()和gets()因为可以接收空格,所以不会产⽣这个错误。
总结
以上所述是⼩编给⼤家介绍的C++中getline()、gets()等函数的⽤法详解,希望对⼤家有所帮助,也⾮常感谢⼤家对⽹站的⽀持!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。