1.get读入一个字符
(1)cin.get() |
|
(2)cin.get(ch) |
|
(3)cin.get(ch,10,'/n') |
cin.get(ch,10) |
2.getline读入一行字符
(1)cin.getline(字符数组,字符个数,终止字符)
Char ch[20];
cin.getline(ch,20); //和get一样
get getline 区别
getline函数从输入流读字符时,遇到终止字符时结束,下一个getline将从该终止标志的下一个字符开始读入,get则仍从该标志字符开始。
cin.get()
#include <iostream>
using namespace std;
int main()
{
char c;
while ((c=cin.get())!=EOF)//EOF文件结束标志 Ctrl+z;
{
cout.put(c);
}
return 0;
}
cin.get(ch)
#include <iostream>
using namespace std;
int main()
{
char c;
while (cin.get(c))
{
cout.put(c);
}
return 0;
}
I like C++./I study C++./I am happy.
cin.get(ch,10,'/n') |
cin.get(ch,10) |
#include <iostream>
using namespace std;
int main()
{
char ch[20];
cin.get(ch,10,'/n');//终止字符可自定义,默认为'/n'
cout<<ch<<endl;
return 0;
}
输入:I study C++ very hard.
输出:I study C
最后加了一个'/0',因此为9个
#include <iostream>
using namespace std;
int main()
{
char ch[20];
cin.get(ch,20,'/');//终止字符可自定义,默认为'/n'
cout<<ch<<endl;
cin.getline(ch,20,'/');
cout<<ch<<endl;
return 0;
}
输入:
I like C++./I study C++./I am happy.
问题一:
void main(void)
{
string st ;
cout<<"Input st:";
getline(cin,st);
cout<<st<<endl;
}
上面这段代码,如果输入abc,那么需要按两次回车键才能显示abc(在VC6中),因为getline有三个参数,第三个参数是字符串的结束符,也就是当getline遇到这个结束符时,就不在接受输入了,比如写成 getline(cin,st,'s'); 即使输入的是abcsabc 那么也只会显示 abc ,因此对于上面出现的情况,有人说getline默认情况下以回车('/n')作为结束符,第一次按回车表示字符串结束,第二次按回车才开始输出。也有人说这是VC6的bug,我觉得前一种解释比较合理,因为: (2008)不会
如果你输入abc(回车)abc,那么程序会显示abc,可见回车的确是函数默认的结束符。
同理1getline(cin,candybar[i].pinpai); 就是当输入一串字符串后赋值给candybar[i].pinpai,然后再按二次回车才显示在屏幕上!
问题二:
1.cin.getline是读入一行字符,比如:
#include <iostream.h>
void main()
{
char str[20];
cout<<"Input :";
cin.getline(str,20);
cout<<str<<endl;
}
当输入:abd cdrasdf g的时候就会输出:abd cdrasdf g。
2.cin.get()第一个用法,是读入一个字符。
#include <iostream.h>
void main()
{
char str;
cout<<"Input :";
str=cin.get();
cout<<str<<endl;
}
当你输入“ABAF”的时候,只会显示“A”,因为只读入了一个字符(空格也可以读入)。
3.cin.get()第二个用法,也是输入一行(同cin.getline()),但是区别就是,不输出分隔符~