作者:温蚊童鞋_612 | 来源:互联网 | 2023-08-30 16:08
1.c++语言标准输入输出流
<1>控制符的用法
#include
#include
using namespace std;
int main(){
int x=30,y=300,z=1024;
cout<<"Decimal:"<" "<" "<//按十进制输出
cout<<"Octal:"<" "<" "<//按八进制输出
cout<<"Hexademical:"<" "<" "<//按十六进制输出
cout<//设置数值中字母大写输出
cout<<"Hexademical:"<" "<" "<//
cout<//设置数值中字母小写输出
cout<<"Hexademical:"<" "<" "<//
cout<<"Decimal:"<" "<" "<//恢复按十进制输出
return 0;
}
运行结果:
#include
#include
using namespace std;
int main(){
int a=10;
int b=1000;
cout<5)<endl;
cout<2)<<b;
return 0;
}
setw操作符主要用来输出预留空格数,若空间多余则向右对齐;若空间不够,按数据长度输出。
#include
#include
using namespace std;
int main(){
cout<'*')//设置填充符号为"*"
<2)<<"OK"<<endl
<3)<<"OK"<<endl
<4)<<"OK"<<endl;
cout<' ');//恢复默认设置,填充空格
return 0;
}
#include
#include
using namespace std;
int main(){
double test=22.0/7;//c++语言默认的流输出数值有效位为六位
cout<endl;
cout<0)<//c++语言最小有效位为1位,此处取1
<1)<endl
<2)<endl
<3)<endl
<4)<endl;
cout<fixed);
cout<8)<endl;
//setiosflags(ios::fixed)与setprecision(8)合用,控制小数点右边的数字个数为八个
cout<6);
return 0;
}
#include
#include
using namespace std;
int main(){
double x=66,y=-8.246;
cout<" "<endl;
cout<//设置强制显示小数点和无效0
cout<" "<endl;
return 0;
}
#include
#include
using namespace std;
int main(){
double x=66,y=-8.246;
cout<" "<endl;
cout<//设置强制显示正号
cout<" "<endl;
return 0;
}
<2>.使用ios类成员函数
#include
using namespace std;
int main(){
char str[250];
cout<<"请输入一字符串:\n";
cin.getline(str,sizeof(str),',');
cout<<"输入的字符串为:"<endl;
return 0;
}
从键盘读取一行文本,每遇到一个逗号就结束一次输入。
运行结果:
2.文件输入输出流
文件分为ASCII文件和二进制文件
文件的打开与关闭
ofstream、ifstream、fstream类
#include
#include
#include <string>
using namespace std;
int main(){
ofstream myf("d:\\myabc.txt");
char txt[255];
while (1)
{
cin.getline(txt,255);
if(strlen(txt)==0)
break;
myf<endl;
}
return 0;
}
此程序可由用户输入任意一些字符串并按行保存到磁盘文件上。
#include
#include
#include <string.h>
int main(){
ifstream myf("d:\\myabc.txt",ios::nocreate);
if(myf.fail()){
cout<<"file not exist!"<<endl;
return 0;
}
char txt[255];
myf>>txt;
while(!myf.eof()){
cout<endl;
myf>>txt;
}
return 0;
}
该程序将上面文件内容输出到屏幕上
先定义文件流对象,再与文件连接
ifstream file;
file.open("myfile.txt",ios::in);//打开文件
file.close();//关闭文件
<1>文件的读写
#include
#include
#include <string>
#include
using namespace std;
int main(){
ifstream ifile;
ofstream ofile;
ifile.open("d:\\myabc.txt");
ofile.open("d:\\213.txt");
if(ifile.fail()||ofile.fail()){
cerr<<"open file fail\n";
return EXIT_FAILURE;//EXIT_FAILURE在cstdlib库中定义
//用于向操作系统报告终止不成功
}
char ch;
ch=ifile.get();
while(!ifile.eof()){
ofile.put(ch);
ch=ifile.get();
}
ifile.close();
ofile.close();
return 0;
}
文件复制
有时,程序用户需要交互输入数据文件名,则可使用下面的程序代码:
ifstream ifile;
string fileName;
cout<<"Enter the input file name:";
cin>>fileName;
ifile.open(fileName.c_str());
<2>文本文件的读写
要求:输入一个学生的姓名、学号、年龄和住址存入文本文件中,然后读出该文件的内容。
#include
#include
#include <string>
#include
using namespace std;
class student{
public:
char name[10];
int num;
int age;
char addr[15];
friend ostream & operator<<(ostream &out,student &s);
friend istream & operator>>(istream &in,student &s);
};
ostream & operator<<(ostream &out,student &s){
out<" "<" "<" "<endl;
return out;
}
istream & operator>>(istream &in,student &s){
in>>s.name>>s.num>>s.age>>s.addr;
return in;
}
int main(){
ofstream ofile;
ifstream ifile;
ofile.open("d:\\s.txt");
student s;
for(int i=1;i<=3;i++){
cout<<"请输入第"<"个学生的姓名 学号 年龄 住址"<<endl;
cin>>s;
ofile<<s;
}
ofile.close();
cout<<"\n读出文件内容"<<endl;
ifile.open("d:\\s.txt");
ifile>>s;
while(!ifile.eof()){
cout<<s;
ifile>>s;
}
ifile.close();
return 0;
}
<3>二进制文件的读写
文本文件和二进制文件最根本的区别在于进行I/O操作时对"\n"字符的解释方式不同。
通过随机数产生函数rand()产生20个整数,逐个将这些数以二进制方式写入文件file.dat中,然后读出这些数,在内存中对它们进行升序排序,再将排序后的数以文本方式逐个写入file.out文件中。
#include
#include
#include
#include
#include
using namespace std;
void sort(int[],int);
int main(){
fstream dat,out; //定义文件流对象
int i,a[20],b[20];
dat.open("file.dat",ios::binary|ios::out|ios::in);//为读写打开二进制文件
if(!dat){
cout<<("cannot open file\n");
exit(0);
}
for(i=0;i<20;i++){
a[i]=rand();
dat.write((char*)&a[i],sizeof(int)); //将20个数读入文件
}
dat.seekg(0); //将文件指针移至文件头
for(i=0;i<20;i++)
dat.read((char*)&b[i],sizeof(int)); //读出20个数
sort(b,20); //调用排序函数
out.open("file.out",ios::out); //为输出打开文本文件
if(!out){
cout<<"cannot open file\n";
exit(0);
}
for(i=0;i<20;i++){
out<" ";
}
out<<"\n";
for(i=0;i<20;i++){ //将排序后数据写入文本文件
cout<10)<<b[i];
if((i+1)%5==0)
cout<<endl;
}
out.close(); //文本文件
dat.close();
return 0;
}
void sort(int x[],int m){ //排序函数
int i,j,k,t;
for(i=0;i1;i++){
k=i;
for(j=i+1;j)
if(x[j]j;
if(k!=i){
t=x[i];x[i]=x[k];x[k]=t;
}
}
}
运行结果:
<4>文件的随机访问
#include
#include
using namespace std;
int main(){
fstream f("DATA",ios::in|ios::out|ios::binary);
int i;
for(i=0;i<20;i++)//先向文件中写20个二进制位表示的整数,无格式
f.write((char*)&i,sizeof(int));
streampos pos=f.tellp();//记录下当前的写指针
for(i=20;i<40;i++)//再向文件中写20个二进制位表示的整数,无格式
f.write((char*)&i,sizeof(int));
f.seekg(pos);//将读指针定位在pos所指的位置
f.read((char*)&i,sizeof(int));
cout<<"the data stored is"<endl;
f.seekp(0,ios::beg);//移到文件开始
for(i=100;i<140;i++)//重写文件中的内容
f.write((char*)&i,sizeof(int));
f.seekg(pos);
f.read((char*)&i,sizeof(int));//将读指针定位在pos所指的位置
cout<<"the data stored is"<endl;
return 0;
}
运行结果: