C++ 笔记——输入 cin cin.get() cin.getline(),gets(),getline()

1.cin:从缓冲区中读取数据时,若缓冲区中第一个字符是空格、tab或换行这些分隔符时,cin>>会将其忽略并清除,继续读取下一个字符,若缓冲区为空,则继续等待。但是如果读取成功,字符后面的分隔符是残留在缓冲区的,cin>>不做处理。 
char a;
    string b;
    string c;
    cin >> a;
    cin >> b;
    cin >> c;

    cout << a << endl;
    cout << b << endl;
    cout << c << endl;
input:
     zhang
     diii
output:
z
hang
diii
缓存区:
     zhang
     diii
从缓存区读取一个字符,忽略并清除空白字符,并赋值给a;
把剩下的不做处理,
缓存区:
hang
     diii
读取一个字符串赋值给b,忽略并清除前面的空白字符,当遇到空格,回车则返回,剩下的不做处理,
缓存区:

     diii
读取一个字符串赋值给c,忽略并清除空白字符,当遇到空格,回车则返回,剩下的不做处理。
2.cin.get
int cin.get();
istream& cin.get(char& var);
istream& get ( char* s, streamsize n );
istream& get ( char* s,  streamsize  n, char delim )。
输入结束条件:Enter键,不丢弃。
char a[20] = {};
    char b;
    string c;
    cin.get(a,10);
    cin.get(b);
    cout << a;
    cout << b;
 zh an
 zh an
请按任意键继续. . .
a为从开始到回车符。不保存回车符。然后回车符保存到b中。
其中输入到char*中,属于istream流
3.cin.getline()
函数作用:从标准输入设备键盘读取一串字符串,并以指定的结束符结束。 
函数原型有两个:
istream& getline(char* s, streamsize count); //默认以换行符结束
istream& getline(char* s, streamsize count, char delim);

cin.getline与cin.get的区别是,cin.getline不会将结束符或者换行符残留在输入缓冲区中。

4.gets
gets是C中的库函数,在< stdio.h>申明,从标准输入设备读字符串,可以无限读取,不会判断上限,以回车结束或者EOF时停止读取,所以程序员应该确保buffer的空间足够大,以便在执行读操作时不发生溢出。 
函数原型:char *gets( char *buffer );
5.getline
C++中定义了一个在std名字空间的全局函数getline,因为这个getline函数的参数使用了string字符串,所以声明在了< string>头文件中了。
getline利用cin可以从标准输入设备键盘读取一行,当遇到如下三种情况会结束读操作:1)到文件结束,2)遇到函数的定界符,3)输入达到最大限度。
函数原型有两个重载形式:
istream& getline ( istream& is, string& str);//默认以换行符结束
istream& getline ( istream& is, string& str, char delim);
getline丢弃换行符  string s; getline(cin,s);

猜你喜欢

转载自blog.csdn.net/zd_nupt/article/details/80436854