1.分类
输入流
、输出流
、输入输出流
。
2.输入输出类关系图
3.输入输出的理解
数据进入程序,为输入;数据流出程序,为输出。或者说,数据从外存(硬盘)进入内存,为输入,数据从内存流出只外存(硬盘等),为输出。
比如:
(1)文件流
ifstream
为输入文件流,对象为a,存放硬盘某路径数据文件,将数据流入string对象b,这个过程为读文件,即输入。ofstream
为输出文件流,对象为a,打开硬盘某路径空数据文件,string对象b流出至空数据文件,这个过程为写文件,即输出。fstream
为输入输出文件流,既可以输入,又可以输出,即打开一个文件,可进行读与写操作。
(2)字符流
对应上述文件流,分别为istringstream
、ostringstream
、stringstream
。
常用的为stringstream
,既可输入又可输出。
比如
string str("my name is hht");
stringstream ss;
ss << str;//输出,这里将整个字符串输出
string sa;
ss >> sa;//输入,输入时遇到空格或制表符停止,这里sa为my
//执行完后,ss中内容为"name is hht"
cout << sa.c_str() << endl;//输出my
ss >> sa;
cout << sa.c_str() << endl;//输出name
(3)cin、cout
cin
为istream对象,从键盘输入数据至某一对象;cout
为ostream对象,从某一对象输出只屏幕。
4.getline(cin,str,’,’)
第一个参数可以为cin,表示从键盘读入数据至str中,只读取逗号前面的,比如,键盘输入"hello,hht",回车,则str内容为"hello"。
也可以从输入字符串流中读,比如
istringstream iss("hello,hht");//或者stringstream
string str;
getline(iss, str, ',');//str为"hello",iss中为"hht"
cout << str.c_str();
getline(iss, str, ',');//str为"hht",iss中为空
cout << str.c_str();
注
:如果不加第三个参数,则将整个输入流中的数据读入str。