【C++】cin、getline、cin.get、cin.getline

1. cin

  • 遇到[enter],[space],[tab]表示当前输入结束,下一个输入从非[enter],[sapce],[tab]开始,按Ctrl+Z或键入EOF回车即可退出
  • 舍弃所有缓冲区的[enter],[space],[tab]
string s;
while(cin>>s)
{
	cout<<s<<endl;
}

2. getline

  • 头文件 #include<string>
  • istream& getline ( istream& is , string& str , char delim );
  • 默认回车符停止读入,按Ctrl+Z或键入EOF回车即可退出
  • 例:getline(cin,line,’#’);
    istream& is 表示一个输入流(cin)
    string& str表示存放从输入流读入的字符串(line)
    char delim表示遇到#停止读入(‘#’)
string s;
while(getline(cin, s, '#'))
{
	cout<<s<<endl;
}


分析:此时#是一个字符串结束标志,换行‘/n’被正常读入进输入流cin。
所以输入流:how are you# doing /n i am fine #and you?/n^Z
字符串:how are you
字符串:doing
i am fine
字符串:and you?
退出程序

3. cin.get和cin.getline

  1. cin.getline(arrayname,size)与cin.get(arrayname,size)的区别:
  • cin.get(arrayname,size)当遇到[enter]时会结束目前输入,他不会删除缓冲区中的[enter]
  • cin.getline(arrayname,size)当遇到[enter]时会结束当前输入,但是会删除缓冲区中的[enter]
  1. cin.getline(arrayname,size,s)与cin.gei(arrayname,size,s)的区别:
  • cin.getline(arrayname,size,ch)当遇到ch时会结束输入,并把s从缓冲区中删除
  • cin.get(arrayname,size,ch)当遇到ch时会结束输入,但不会删除缓冲区中的s

3.1 cin.get

  • a = cin.get() 或者 cin.get(a)::单字符的输入,用途是输入一个字符,把它的ASCALL码存入到a中。

注释:cin.get()在缓冲区遇到[enter],[space],[tab]继续留在缓冲区

  • cin.get(arrayname,size,s) 把数据输入到arrayname字符数组中,当到达长度size时结束或者遇到字符s时结束

注释:a必须是字符数组,即char a[]l类型,不可为string类型;size为最大的输入长度;s为控制,遇到s则当前输入结束缓存区里的s将被舍弃

3.2 cin.getline

  • cin.getline()的用法和cin.get()用法大致相同,没有一参数用法,只有二参数,三参数两类

猜你喜欢

转载自blog.csdn.net/helloworld0529/article/details/107631638