初学C++,对于输入流cin的理解总有些不解,今天稍微做了下整理,总结了下目前所能了解的,相信随着学习的深入,会有更好的总结。代码中注释所标注的1.2.3.稍后会做一些解释。
/** * istream_test.c - 测试C++中的cin * * author/date - lc/20140407 **/ #include <iostream> #include <string> //#include <climits> #include <limits> #include <vector> using namespace std; int main() { cout << "---> TEST CHAR <---" << endl; char ch_char; //测试char类型 cin >> ch_char; cout << "char test:" << ch_char << endl; cin.ignore(numeric_limits<streamsize>::max(),'\n'); // cin.ignore(20,'\n'); //1.清除当前行的缓冲区 cout << "---> TEST STRING <---" << endl; string ch_string; cin >> ch_string; cout << "string test:" << ch_string << endl; //测试stirng类型 //输入字符串的循环结束 vector<string> vec_string; while(cin>>ch_string) { if(ch_string == "quit" ) // 2.设置结束标志或者按ctrl+d结束 break; vec_string.push_back(ch_string); } vector<string>::size_type count=vec_string.size(); int i; for( i=0;i<count;i++) cout << "+++" << vec_string[i] << endl; //输入数值的循环结束 vector<double> vec_double; double in_tmp; while(cin>>in_tmp) // 3.如果输入字符则结束,即范围超过了数值,输入出现错误 vec_double.push_back(in_tmp); vector<string>::size_type count_2=vec_double.size(); for( i=0;i<count_2;i++) cout << "---" << vec_double[i] << endl; return 0; }
cin是标准输入,是istream类的一个对象,作用是从终端读数据。>>运算符从标准输入读进一个字符串(或其它),它会略去输入开始碰到的空白字符,如空白,制表键,回车键或换行符,然后将连续的字符读入到后面的变量中。
1.清除缓冲,如果了解C的话,会知道输入输出都会有一个缓冲区,在满足一定条件时,缓冲区的数据才会输出,如果不清缓冲区,会发现在第一次输入一个字符串时,如“hello” 则ch_char=’h’ ch_string=”ello”.
2.string类型的连续读入需要设置结束标志,当然如果按“ctrl+d”也可以,但毕竟不是程序本意。
3.如果输入为数值,那就好办了,输入一个字符就可以结束循环。