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小时内删除。
发表评论