在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
http://www.cnblogs.com/keam37/ keam所有 转载请注明出处 本文将分别从<iostream>,<sstream>,<fstream>,<iomanip>4个头文件介绍包含在其中的函数的用法. #inclde<iostream> cin,cout,cerr是最基本的输入输出流 ,通过运算符"<<"和 “>>”操作 例如从键盘读入两个字符串,再将其合并输出 string s1,s2; cin>>s1>>s2; cout<<s1+' '+s2; if(!cin) cerr<<"input error";
运行输入为 :
则会输出:
如果直接输入文件结束符 ctrl+z 则会输出 “input error”
这里与if(!cin) 有关的是操纵流的条件状态 有以下几种状态(flag)
定义 istream s;//s是一个输入流
下面的例子来自C++primer:
auto old_state = cin.rdstate(); //记住cin的当前状态 cin.clear(); //使cin有效 process_input (cin); //使用cin cin.setstate (old_state) ; //将cin置为原状态 如果程序崩溃,输出缓冲区将不会刷新,可能导致不会输出程序执行结果.
刷新输出缓冲区的方法
unitbuf 操作符
关联输入和输出流
其他操作
//在使用get后可以使用 cin.gcount( )返回 已经读入的字符数 例如
char c[10]; cin.get ( &c[0], 9 ); cout << c << endl; cout << cin.gcount( ) << endl; /*==============================/* #include<sstream> stringstream s;//定义一个字符串流s stringstream s(“keambar”);//定义一个已近写入”keambar”的字符串流;
sstream操作虽然简单,但十分实用,具体用法和方便之处自行体会 :) <iostream>大部分输入输出操作都可以对stringstream使用 /*==============================/* #inclde<fstream> ifstream read("in.txt"); //打开文件in.txt
文件模式(mod)s.open(文件名,mod)
默认使用oftream 以out方式打开,并且截断文件,要保留原内容需要用app模式 下面内容来自文档 seekg()/seekp()与tellg()/tellp()的用法详解 seekg()/seekp()与tellg()/tellp()的用法详解
其他操作 peek() //peek函数用于读取并返回下一个字符,但并不提取该字符到输入流中,也就是说,依然让该字符作为将要提取到输入流的下一个字符。 例如下面来自 http://www.cplusplus.com/reference/istream/istream/peek/的例程 // istream::peek example #include <iostream> // std::cin, std::cout #include <string> // std::string int main () { std::cout << "Please, enter a number or a word: "; char c = std::cin.peek(); if ( (c >= '0') && (c <= '9') ) { int n; std::cin >> n; std::cout << "You entered the number: " << n << '\n'; 15 } else { std::string str; std::getline (std::cin, str); std::cout << "You entered the word: " << str << '\n'; } return 0; } cin.read(char* buffer, streamsize num ) //按字节读入 cin.write(const char* buffer, streamsize num )//按字节输出 例如 struct { int height; int width; } rectangle; input_file.read ( (char *) (&rectangle), sizeof (rectangle) ); if ( input_file.bad() ) { cerr << "Error reading data" << endl; exit ( 0 ); } /*==============================/* #inclde<iomanip> 涉及到格式化输出,不仅仅使用<iomanip>头文件,也将包含<iostream> <iostream>中有
例如
cout << 32 << endl; cout.width (5); cout << 32 << endl; cout << 32 << endl; cout.fill ('#'); cout.width (5); cout << 32 << endl; cout << cout.fill() << endl;
将输出
ios格式
下面来自http://www.cnblogs.com/devymex/archive/2010/09/06/1818754.html 更多操作也可参考其中
另外 cout.flag的操作有如下用法 int number = 32; cout.setf (ios::showbase); //设置为显示进制前缀 //setw()函数在<iomanip>中,包括直接使用<<hex cout << setw (6) << hex << 32 << setw (6) << oct << 32 << endl; cout << number << endl;//此时输出按照最近一次输出的格式输出 auto p = cout.flags();//用p记录当期的格式 cout.unsetf(ios::oct);//取消8进制输出 cout << number << endl; cout.flags (p); //设置为格式p cout << number << endl; return 0;
输出为
参考资料 c++ primer,c++ Reference
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论