112标准跪对象cin 类 istream的定义 class istream: virtual public ios t public: istream(streambuf )i istream get(signed char *, int, char = \n; istream get(signed char x, int, char = \ni istream get(signed char &i istream get(unsigned char &i int geto; istream getline(signed char int, char =nD; istream getline unsigned char int, char =\n; istream read(signed char * int, )i int peek istream operator>>(signed char x istream operator >>(signed char &) istream operator >>(int &i
11.2 标准流对象 cin 类istream的定义: class istream:virtual public ios { public: istream(streambuf *); istream & get(signed char *, int, char =‘\n’); istream & get(signed char *, int, char =‘\n’); istream & get(signed char &); istream & get(unsigned char &); int get(); istream & getline(signed char *, int, char =‘\n’); istream & getline(unsigned char *, int, char =‘\n’); istream & read(signed char *, int, ); …… int peek(); istream & operator >> (signed char *); istream & operator >> (signed char &); istream & operator >> (int &); …… };
112标准跪对cin C++的流通过重载运算符“<<“和“>>"执行输入和输出 操作。输出操作是向流中插入一个字符序列,因此,在流操作 中,将运算符“<<"称为插入运算符。输出操作是从流中提取 个字符序列,因此,将运算符“>>"称为提取运算符。 在 istream输入流类中定义有对右移操作符>>重载的一组 公用成员函数,函数的具体声明格式为: istream& operator>>(简单类型标识符&); 简单类型标识符可以为char, unsigned char, short, unsigned short, int, long, unsigned long, float, double, long double,char*, unsigned char*之中的 任何一种,对于每一种类型都对应着一个右移操作符重载函数 由于右移操作符重载用于给变量输入数据的操作,所以又称为 提取操作符,即从流中提取出数据赋给变量 cin>>变量相当于 cinoperator>>(变量) cin>>k cinoperator >> (k)i 心u
11.2 标准流对象 cin C++的流通过重载运算符“<<”和“>>”执行输入和输出 操作。输出操作是向流中插入一个字符序列,因此,在流操作 中,将运算符“<<”称为插入运算符。输出操作是从流中提取 一个字符序列,因此,将运算符“>>”称为提取运算符。 在istream输入流类中定义有对右移操作符>>重载的一组 公用成员函数,函数的具体声明格式为: istream & operator >>(简单类型标识符 &); 简单类型标识符可以为char, unsigned char, short, unsigned short, int, long, unsigned long, float, double, long double, char *, unsigned char *之中的 任何一种,对于每一种类型都对应着一个右移操作符重载函数。 由于右移操作符重载用于给变量输入数据的操作,所以又称为 提取操作符,即从流中提取出数据赋给变量。 cin >> 变量 相当于 cin.operator >> (变量) cin >> k; cin.operator >> (k);
112标准跪对象cin char ca int k float fa cin >>k>>c>> fa cinoperator>>(k operator>>(k)operator>>( k)i 对象引用 另外,我们也可以直接利用 istream中的公用成员函数来进 行数据的输入,如: void maino//11-2-1.cpp d int i= 0; char buf[20]: while(i<20 &&(buf[i]cin geto!=n)i++i buf[i]=0 cout < buf < endli f// while (i<20 & cin get(buf[i])&& buf[i]!="n)i++
11.2 标准流对象 cin char c; int k; float f; cin >> k >> c >> f; cin.operator>>(k). operator>>(k).operator>>(k); 另外,我们也可以直接利用istream中的公用成员函数来进 行数据的输入,如: void main() // 11-2-1.cpp { int i = 0; char buf[20]; while(i<20 && (buf[i]=cin.get()) != ‘\n’) i ++; buf[i] = ‘\0’; cout << buf << endl; } // while(i<20 && cin.get(buf[i]) && buf[i] != ‘\n’) i ++; 对象引用
112标准流对象cin 标准设备输入,注意以下几点,可以避免错误。 1.cin为缓冲流。键盘输入的数据保存在缓冲区中,当要提取 时,是从缓冲区中拿。如果一次输入过多,会留在那儿慢慢 用,如果输入错了,必须在回车之前修改,如果回车键按下 就无法挽回了。只有把输入缓冲区中的数据取完后,才要求 输入新的数据。不可能用刷新来清除缓冲区,所以不能输错, 也不能多输! 2.输入的数据类型必须与要提取的数据类型一致,否则出错。 3.空格和回车都可以作为数据之间的分格符,所以多个数据可 以在一行输入,也可以分行输入。但如果是字符型和字符串, 则空格(ASCI码为32)无法用cin输入,字符串中也不能 有空格。回车符也无法读入。 读空格符: cin.getline( str, sIze)
11.2 标准流对象 cin 标准设备输入,注意以下几点,可以避免错误。 1. cin为缓冲流。键盘输入的数据保存在缓冲区中,当要提取 时,是从缓冲区中拿。如果一次输入过多,会留在那儿慢慢 用,如果输入错了,必须在回车之前修改,如果回车键按下 就无法挽回了。只有把输入缓冲区中的数据取完后,才要求 输入新的数据。不可能用刷新来清除缓冲区,所以不能输错, 也不能多输! 2. 输入的数据类型必须与要提取的数据类型一致,否则出错。 3. 空格和回车都可以作为数据之间的分格符,所以多个数据可 以在一行输入,也可以分行输入。但如果是字符型和字符串, 则空格(ASCII码为32)无法用cin输入,字符串中也不能 有空格。回车符也无法读入。 读空格符:cin.getline(str, SIZE);
112标准流封亲cin #include <iostream h>//11-2-2 cpp const int ne40 void maino i char s1[Nl, S2N] cout≤≤ Enter a String:"; cin>> s1: cout << S1:<<s1<< enda cin getline (s2, n;// cin get(s2, Ni cout <<S2=<< s2<< end; 输入: get put read write 结果是:S1=get S2= put read write
11.2 标准流对象 cin #include <iostream.h> // 11-2-2.cpp const int N=40; void main() { char s1[N], s2[N]; cout << “Enter a String:”; cin >> s1; cout << “S1=“ << s1 << endl; cin.getline(s2, N); // cin.get(s2, N); cout << “S2=“ << s2 << endl; } 输入:get put read write 结果是:S1=get S2= put read write