91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

流類庫和文件

發布時間:2020-07-24 17:08:58 來源:網絡 閱讀:368 作者:匯天下豪杰 欄目:移動開發

1、流類庫

  (1)、C++中沒有輸入輸出,標準庫中包含一個I/O流類庫。

  C語言中printf 和scanf 稱為函數; 輸出到屏幕

  C++中cout和cin稱為對象;  輸入是鍵盤

  其中iostream是虛繼承;

  cout<<int/char/double----->是因為重載了<<。

流類庫和文件

  (2)、C++流類庫中定義4個全局流對象,cin、cout、cerr、clog

  cin 標準輸入流對象,鍵盤

  cout標準輸出流,屏幕

  cerr和clog標準錯誤輸出流, 屏幕

  其中cin、cout、clog是帶緩沖區的,緩沖區由streambuf類對象來管理,cerr非緩沖區,一旦錯誤發生立即顯示。

#include<iostream>
using namespace std;

int main(void){
    cerr<<"Error"<<endl; //錯誤直接輸出
    cout<<"Hello"<<endl; //先放到緩沖區中
}

2、格式控制

  會用,知道怎么查就行了,沒必要記這些;

  cout.flags(ios::hex); //hex這些在ios類中,以16進制輸出;

流類庫和文件

0000 0000 0000 0000  有多少個1,就有什么功能;

ios::hex | ios::showbase        hex和showbase都是在ios類中定義的枚舉,1-16各占一位;

3、文件

  (1)、先定義一個文件對象流

  (2)、打開某個文件

  (3)、進行文件的讀寫

  (4)、關閉文件

ASCII字符節文件:

  fprintf(fd, "", );    :寫入文件

  fscanf(fd, "", );    :從文件讀出

文本文件的操作,寫入文件:

#include<iostream>
#include<fstream>//文件輸出流頭文件
#include<stdlib.h>
using namespace std;

int main(void){
    int ar[] = {1, 3, 5, 6, 7, 9,};
    //1、
    //ofstream ofile("Test1.txt", ios::out);與下2步等價
    ofstream ofile;
    //2、
    ofile.open("Test1.txt", ios::out);
    if(!ofile){
        cerr<<"Open File Fail!"<<endl;
        exit(1);
    }
    for(int i = 0; i < sizeof(ar)/sizeof(int); i++){
        ofile<<ar[i]<<" ";
    }

    ofile.close();
}

  在文件中讀出:

#include<iostream>
#include<fstream>//文件輸出流頭文件
#include<stdlib.h>
using namespace std;

int main(void){
    int ar[10];
    ifstream ifile;
    ifile.open("Test1.txt", ios::in);
    if(!ifile){
        cerr<<"Open File Fail"<<endl;
        exit(1);
    }
    for(int i = 0; i < 4; i++){
        ifile>>ar[i];
    }

    ifile.close();
}

4、二進制讀寫

  寫入文件:

#include<iostream>
#include<fstream>//文件輸出流頭文件
#include<stdlib.h>
using namespace std;

int main(void){
    int ar[] = {1, 3, 5, 6, 7, 9,};
    //1、
    //ofstream ofile("Test1.txt", ios::out);與下2步等價
    ofstream ofile;
    //2、
    ofile.open("Test1.txt", ios::out | ios::binary);
    if(!ofile){
        cerr<<"Open File Fail!"<<endl;
        exit(1);
    }
    ofile.write((char *)ar, sizeof(ar));//這樣就不用循環了,一次性解決

    ofile.close();
}

  從文件讀出:

#include<iostream>
#include<fstream>//文件輸出流頭文件
#include<stdlib.h>
using namespace std;

int main(void){
    int ar[] = {1, 3, 5, 6, 7, 9,};
    //1、
    //ifstream ofile("Test1.txt", ios::out);
    ifstream ifile;
    //2、
    ifile.open("Test1.txt", ios::out | ios::binary);
    if(!ifile){
        cerr<<"Open File Fail!"<<endl;
        exit(1);
    }
    ifile.read((char *)ar, sizeof(ar));//這樣就不用循環了,一次性全部讀出

    ifile.close();
}

5、文件隨機訪問

  隨機讀寫關鍵靠文件指針;

  文件指針,開始指向第一個,讀寫就靠這個文件讀寫指針,會自動指向下一個;

#include<iostream>
#include<fstream>//文件輸出流頭文件
#include<stdlib.h>
using namespace std;

int main(void){
    ifstream ifile;

    ifile.open("Test1.txt", ios::in);
    if(!ifile){
        cerr<<"Open File Fail!"<<endl;
        exit(1);
    }
    int pos;
    int value;
    while(1){
        cout<<"請輸入位置: ";
        cin>>pos;
        //beg  cur  end
        ifile.seekg(pos, ios::beg);//定位函數,pos,相對于什么地方開始
        ifile>>value; //將定位處的值放入value;
        cout<<"value = "<<value<<endl;
    }
    ifile.close();
}

文件可以定位讀出,最好用二進制解決,每個數字都是4字節;就不用考慮每個數字跨幾個字節,所以為pos*4;

文本文件在其中每個數字(0-9)占用1個字節,不好定位一個完整數字占用幾個字節;

 5、文件與對象

  在C++程序設計中,文件應該在構造函數中打開,并創建對象,而在析構函數中保存和關閉文件,并撤銷對象;

  對文件而言,釋放資源的同時包括將對象中的信息再次存入磁盤文件,在程序運行過程中,應將信息適時保存到相應

的磁盤文件,以免數據意外丟失。

  文件與對象的有機結合(關鍵在構造和析構函數),以下就是一個相應的例子:

#include<iostream>
#include<fstream>
using namespace std;

class Complex;
ostream& operator<<(ostream &out, const Complex &t);

class Complex{
    friend ostream& operator<<(ostream &out, const Complex &t);
public:
    Complex() : real(0), p_w_picpath(0){
        ifstream ifile;
        ifile.open("Test.txt", ios::in);
        if(!ifile){
            cerr<<"Open File Fail"<<endl;
            exit(1);
        }
        ifile>>real>>p_w_picpath;
        ifile.close();
    }
    Complex(int rea, int imag) : real(rea), p_w_picpath(imag){}
    ~Complex(){
        ofstream ofile;
        ofile.open("Test.txt", ios::out);
        if(!ofile){
            cerr<<"Open File Fail"<<endl;
            exit(1);
        }
        ofile<<real<<" "<<p_w_picpath;
        ofile.close();
    }
public:
    void setComplex(int real, int p_w_picpath){
        this->real = real;
        this->p_w_picpath = p_w_picpath;
    }
private:
    int real;
    int p_w_picpath;
};

ostream& operator<<(ostream &out, const Complex &t){
    out<<"("<<t.real<<","<<t.p_w_picpath<<")";
    return out;
}
int main(void){
    Complex c;
    cout<<c<<endl;
    c.setComplex(100, 200);//模擬了在下一次實例化時把上一次讀取出來。
//    cout<<c<<endl;//寫進文件,保存設置。
}



向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

安福县| 长阳| 万盛区| 湘潭县| 收藏| 漳浦县| 光山县| 贵溪市| 闽清县| 沁水县| 永德县| 涟水县| 柏乡县| 惠州市| 额尔古纳市| 淮南市| 泸水县| 科技| 蓬莱市| 灵武市| 陈巴尔虎旗| 新丰县| 恭城| 克什克腾旗| 佛冈县| 怀化市| 平果县| 芦山县| 凤翔县| 沙田区| 饶阳县| 出国| 中江县| 永福县| 海门市| 孙吴县| 黄骅市| 宾阳县| 安远县| 横山县| 长春市|