第十一章 io和文件操作
2016-11-16 本文已影响12人
ie大博
ignore的一点应用
using namespace std;
int main()
{
string s;
cout<<"请输入一串字符";
cin.ignore(8,' ');//输入时忽略前八个字符,或者忽略遇到空格之前的内容。空格为结束符
cin>>s;
cout<<"string s ="<<s<<endl;
return 0;
}
putback的使用
#include<iostream>
using namespace std;
int main()
{
char ch;
cin.putback('a');//把a放在缓存流中
cout<<"请输入一个ch的数据";
cin>>ch;//如果缓存流中有东西,就不用继续输入了
cout<<"char ch ="<<ch<<endl;
return 0;
}
peek:窥视
{
int i;
string s;
cout <<"start"<<endl;
char ch=cin.peek();//获得缓存区的第一个字符,如果没有数据的话,等待用户输入。
cout<<"end"<<endl;
if((ch>='0')&&(ch<='9'))
{
cin>>i;
cout<<"int i ="<<i<<endl;
}
else
{
cin>>s;
cout<<"string s="<<s<<endl;
}
return 0;
}
流操作算子
Paste_Image.pngint main()
{
int i=11;
cout<<oct<<i<<endl;//这个位置放置
return 0;
}
精度控制
Paste_Image.png#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
double root2=3.14159312;
for(int places =0;places <= 9;places++)
cout<<setprecision(places)<<root2<<'\n';
return 0;
}
设置cout域宽
int main()
{
int t1[5]={321,5312,43143242,232,1};
int t2[5]={7645,3654,54,6,8};
for(int i=0;i<5;i++)
{
cout.width(10);//设置域宽为10
cout<<t1[i];
}
cout<<endl;
for(int j=0;j<5;j++)
{
cout.width(10);
cout<<t2[j];
}
cout<<endl;
return 0;
}
cin的域宽设置,这里面的死循环可以用Ctrl+d退出
这里面如果输入的东西超过5,它就会在另外一行继续输入
int main()
{
char n[20]={0};//这里还必须是字符形式。
cin.width(5);
while(cin>>n)
{
cout<<"n = "<<n<<endl;
cin.width(5);
}
return 0;
}
自己制作一个命令,tab
using namespace std;
ostream& tab(ostream& output)
{
return output<<'\t';
}
int main()
{
cout<<"n"<<tab<<'a'<<endl;//这里的tab就是相当于\t.
return 0;
}
limits
#include<limits>//注意这个头文件
int main()
{
int a;
int b;
cin>>a;
cout<<"a="<<cin.good()<<endl;
if(!cin.good())
{
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(),'\n');//忽略缓存流里面的所有内容
}
cout<<"cin2 ="<<cin.good()<<endl;
cin>>b;
cout<<"b="<<b<<endl;
return 0;
}
文件操作
读写文件
#include<iostream>
#include<iomanip>
#include<fstream>//或者fstream
using namespace std;
int main()
{
/* ofstream ofile("zyz1");//写文件
ofile<<"pear"<<" "<<4.5;//写的内容
ofile.close();*//关闭文件
ifstream ifile("zyz1");//读文件
char sztext[20];//
double price;
ifile>>sztext>>price;//读文件内容出来
cout<<sztext<<" "<<price;//打印出来
ifile.close();
return 0;
}
二进制读写文件
ofstream ofile("zyz2",ios::out|ios::binary);//用二进制写入文件
char temp[20]="nihao";
ofile.write(temp,20);//字符串名字,+长度
ofile.close();
ifstream ifile("zyz2",ios::in|ios::binary);//二进制读文件
char temp[20];//读20个字符
ifile.read(temp,20);
cout<<temp<<endl;
ifile.close();
文件指针
#include<fstream>
using namespace std;
int main()
{
ifstream ifile("exam.txt");
if(NULL==ifile)
{
cout<<"文件打开失败"<<endl;
return -1;
}
ifile.seekg(0,ios::end);//它的意思应该是设定一个指针,从第一个位置开始查,到最后有多少个
cout<<"get point position:"<<ifile.tellg()<<endl;
ifile.close();
return 0;
}