seo 网站地图优化,网站设计工具有哪些,做视频赚钱的网站有哪些,网批做衣服的网站1、流的控制 iomanip 在使用格式化I/O时应包含此头文件。 stdiostream 用于混合使用C和C 的I/O机制时#xff0c;例如想将C程序转变为C程序 2、类继承关系 ios是抽象基类#xff0c;由它派生出istream类和ostream类#xff0c; iostream类支持输入输出操作 的I/O机制时例如想将C程序转变为C程序 2、类继承关系 ios是抽象基类由它派生出istream类和ostream类 iostream类支持输入输出操作iostream类是从istream类和ostream类通过多重继承而派生的类 类ifstream继承了类istream类ofstream继承了类ostream类fstream继承了 类iostreamiostream头文件中4种流对象 对象 含义 对应设备 对应的类 c语言中相应的标准文件 cin 标准输入流 键盘 istream_withassign stdin cout 标准输出流 屏幕 ostream_withassign stdout cerr 标准错误流 屏幕 ostream_withassign stderr clog 标准错误流 屏幕 ostream_withassign stderr cout补充 1、用“cout”输出基本类型的数据时可以不必考虑数据是什么类型系统会判断数据的类型 并根据其类型选择调用与之匹配的运算符重载函数。这个过程都是自动的用户不必干预。 如果在C语言中用prinf函数输出不同类型的数据必须分别指定相应的输出格式符十分麻烦而且容易出错 2、cout流在内存中对应开辟了一个缓冲区用来存放流中的数据当向cout流插 人一个endl时 不论缓冲区是否已满都立即输出流中所有数据然后插入一个换行符 并刷新流清空缓冲区。 注意如果插人一个换行符”\n“如couta\n则只输出和换行而不刷新cout 流(但并不是所有编译系统都体现出这一区别。 3、在iostream中只对和运算符用于标准类型数据的输入输出进行了重载但未对用户声明的类型数据的输入输出 进行重载。 如果用户声明了新的类型并希望用和运算符对其进行输入输出按照重运算符重载来做。 cout 流通常是传送到显示器输出但也可以被重定向 输出到磁盘文件而cerr流中的信息只能在显示器输出 cerr是不经过缓冲区直接向显示器上输出有关信息而clog中的信息存放在缓冲区中缓冲区满后或遇endl时向显示器输出 3、标准输入流 cin 重点掌握的函数 cin.get() //读入一个字符并返回它的值 cin.get(一个参数) //读入一个字符并把它存储在ch cin.get(两个参数) //可以读取字符串 cin.get(三个参数) //可以读字符串 cin.getline() cin.ignore() //读取字符并忽略指定字符 cin.peek() //检查下一个输入的字符不会把字符从流中移除 cin.putback() //返回一个字符给一个流 重要 1、使用cin从流中读出的字符流中就没有这字符了再次读取时只能读取剩下的 2、缓冲去只有在遇到EOF、手动敲回车、流缓存区满时才将流中的字符全部读出即清空缓存区 练习 1、从流中取一个字符然后在放进去 2、判断流中的第一个字符是不是放进去的那个字符 3、从流中读取10个字符 4、从流中忽略5个字符再读取10个字符 5、最后读取剩下的字符最后输出读到的所有字符 #include iostream
using namespace std;int main()
{char ch1;int look;char str1[11] {0};char str2[11] {0};char str3[100] {0};//从流中取一个字符然后在放进去ch1 cin.get();cin.putback(ch1);//判断流中的第一个字符是不是放进去的那个字符look cin.peek();if(look (int)ch1){coutcin.peek()放进去的字符在第一个位置endl;}else{coutcin.peek()放进去的字符不是在第一个位置endl;}//从流中读取10个字符cin.get(str1,11);//从流中忽略5个字符再读取10个字符cin.ignore(5);cin.get(str2,11,EOF);//最后读取剩下的字符最后输出读到的所有字符cin.getline(str3,100);//输出读到的数据cout第一个字符ch1endl;cout第一组 字符串str1endl;cout第二组 字符串str2endl;cout剩下的字符串str3endl;system(pause);return 0;
} 输出 0123456789abcde9876543210zzzzzzzzzzxxxxxxxxxxxxxyyyyyyyyyyyy
cin.peek()放进去的字符在第一个位置
第一个字符0
第一组 字符串0123456789
第二组 字符串9876543210
剩下的字符串zzzzzzzzzzxxxxxxxxxxxxxyyyyyyyyyyyy 4、标准输出流 cout 流成员函数 cout.flush() //清空缓冲区 cout.put() //把字符写入流中 cout.write() //将字符串写入当前输出流中 eg : cout.setf( ios::dec ); cout.setf(ios::hex,ios::basefield)【建议使用这种】 需注意1、fmtflags setf( fmtflags flags ); 使用这种一定要先取消当前基【cout.unself()】之后才可以设置新的基 2、fmtflags setf( fmtflags flags, fmtflags needed ); 使用这种第二个参数设为当前的基或者当不知道当前基时设为ios_base::basefield清除当前的所有可能的基 控制符,头文件iomanip eg: coutsetw(5); 5、文件I/O 由于文件设备并不像显示器屏幕与键盘那样是标准默认设备不能像cout那样预先定义的全局对象所以我们必须自己定义一个该类的对象。 ifstream类它是从istream类派生的用来支持从磁盘文件的输入。 ofstream类它是从ostream类派生的用来支持向磁盘文件的输出。 fstream类它是从iostream类派生的用来支持对磁盘文件的输入输出。 文件原理 文件打开都有一个文件指针该指针的初始位置由I/O方式指定每次读写都从文件指针的当前位置开始。每读入一个字节指针就后移一个字节。当文件指针移到最后就会遇到文件结束EOF文件结束符也占一个字节其值为-1)此时流对象的成员函数eof的值为非0值(一般设为1)表示文件结束 了。 文件关闭实际上是解除该磁盘文件与文件流的关联原来设置的工作方式也失效这样就不能再通过文件流对该文件进行输入或输出 文件类型1、ASCII文件文件的每一个字节中均以ASCII代码形式存放数据,即一个字节存放一个字符,这个文件就是ASCII文件(或称字符文件)。 2、二进制文件文件中的信息不是字符数据而是字节中的二进制形式的信息因此它又称为字节文件 常用函数 打开文件 方式1对文件输出流、文件流对象通过ofstream类的构造函数打开文件 格式 ofstream (磁盘文件名, 输入输出方式); 如果ofstream 为0(假)表示打开操作失败 如 ofstream fout1(fname,ios::out); 输入输出方式可以使用能够进行组合使用的以“或”运算“|”的方式如fstream fout(fname,ios::out|ios::in) 方式2对文件的输出和输入流对象、文件流对象都可通过open函数打开文件 格式 文件流对象.open(磁盘文件名, 输入输出方式); 返回值为0(假)打开操作失败 如 fout.open(fname,ios::out) 关闭文件 在对已打开的磁盘文件的读写操作完成后必须要关闭该文件 如 outfile.close( ); 文件操作 1、可以用流插入运算符“”和流提取运算符“”输入输出标准类型的数据 读出时在遇空格、换行都结束。 2、也可以用文件流的put、get、geiline等成员函数进行字符的输入输出。 #include iostream
using namespace std;
#include fstreamint main()
{char fname[] d:/file1.txt;char buff[1024] {0};/*********** 写文件 *************///方式1 输出流ofstream对象调用fopen函数ofstream fout;fout.open(fname,ios::out);if(!fout){cout打开文件失败fnameendl;}fout hello world !; //通过左移运算符写入字符串fout.flush();fout.close();//方式2 调用输出流ofstream对象的构造函数ofstream fout1(fname,ios::out);if(!fout1){cout打开文件失败fnameendl;}fout1.put(h); //通过put函数写入字符fout1.put(e);fout1.put(l);fout1.put(l);fout1.put(o);fout1.put(\n);fout1.flush();fout1.close();//文件流对象写文件fstream file2(fname,ios::in|ios::out);file2abdfd\n;file211111\n;file2.flush();file2.close();/*********** 读文件 *************///输入流ifstream对象读取文件内容ifstream fin;fin.open(fname,ios::in);fin.getline(buff,1024); //通过getline函数读取字符串coutbuffendl; fin.close();//文件流对象读文件内容fstream file1(fname,ios::in|ios::out);file1buff; //通过右移运算符读出字符串file1.close();coutbuffendl;system(pause);return 0;
} 二进制文件操作 对二进制文件的读写主要用istream类的成员函数read和write来实现。这两个成员函数的原型为 istream read(char *buffer,int len); ostream write(const char * buffer,int len); #include iostream
using namespace std;
#include fstreamclass Teacher
{
public:Teacher(){}Teacher(int age,char name[20]){this-age age;strcpy(this-name,name);}void prinfInfo(){coutTeacher name:this-name age:this-ageendl;}
private:int age;char name[20];
};int main()
{Teacher t1(31,xiaoming);Teacher t2(32,xiaohong);Teacher t3(33,xiaohua);Teacher t4(34,xiaoxin);char fname[] d:/file2;fstream fs(fname,ios::binary|ios::out);if(!fs){cout文件打开失败endl;}fs.write((char *)t1,sizeof(Teacher));fs.write((char *)t2,sizeof(Teacher));fs.write((char *)t3,sizeof(Teacher));fs.write((char *)t4,sizeof(Teacher));fs.flush();fs.close();fstream fs2(fname,ios::binary|ios::in);if(!fs){cout文件打开失败endl;}Teacher tt;fs2.read((char *)tt,sizeof(Teacher));tt.prinfInfo();fs2.read((char *)tt,sizeof(Teacher));tt.prinfInfo();fs2.read((char *)tt,sizeof(Teacher));tt.prinfInfo();fs2.read((char *)tt,sizeof(Teacher));tt.prinfInfo();fs2.close();system(pause);return 0;
} 输出 Teacher name:xiaoming age:31
Teacher name:xiaohong age:32
Teacher name:xiaohua age:33
Teacher name:xiaoxin age:34 转载于:https://www.cnblogs.com/leebxo/p/11059563.html