上嵌学习笔记

第十一章 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.png
int 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;
}
上一篇下一篇

猜你喜欢

热点阅读