C++文件流讀取


通過運用ofstream和ifstream類去創建對象來進行文件讀寫。

使用文件流新建或打開一個文件,並寫入字符串 "This is a test file".

#include<fstream>
#include<iostream>
using namespace std;
int main()
{
    ofstream outFile("test.txt",ios::out);

    if(!outFile)
        cout<<"Open file or create file error."<<endl;
    else
        outFile<<"This is a file."<<5<<" "<<1.2;
    return 0;
}

使用文件流將創建的文件test.txt.中的所有數據讀取出來。

#include<fstream>
#include<iostream>
using namespace std;
int main()
{
    ifstream inFile("test.txt",ios::in);
    int b;
    char a[100];
    float c;

    if(!inFile)
        cout<<"File open error."<<endl;
    else
    {
        inFile>>a;
        in
        cout<<"string--"<<a<<endl;
        cout<<"int--"<<b<<endl;
        cout<<"float--"<<c<<endl;
    }
    return 0;
}

使用ifstream類成員函數seekg,結合文件輸入輸出流,寫的一個wav文件解析的應用。

wav文件解析:

#include<fstream>
#include<iostream>
#include<cstring>
//#incl
#define MAX_STR_LEN 32
using namespace std;
class wav
{
    public:
             char id[4];
    unsigned long file_size;
      //文件大小
    unsigned short channel;            //通道數
    unsigned int frequency;        //采樣頻率
    unsigned long Bps;                //Byte率
    unsigned short sample_num_bit;    //一個樣本的位數
    unsigned long data_size;        //數據大小
    unsigned char *data;            //音頻數據 ,這里要定義什么就看樣本位數了,我這里只是單純的復制數據
};
int main()
{
    wav ww;

    ifstream inFile("do.wav",ios::in|ios::binary);
    if(!inFile)
        cout<<"error";
    else{
    char buff[4];
    unsigned long tlong ;
    unsigned short tshort;

    inFile.seekg(0,ios::beg);
    inFile>>ww.id;

    inFile.seekg(12,ios::beg);
    inFile>>buff;
    cout<<"fmt:"<<buff<<endl;

    inFile.seekg(16,ios::beg);
    inFile>>buff;
    memcpy(&tlong,buff,sizeof(unsigned long));
    cout<<"fmt size:"<<tlong<<endl;

    inFile.seekg(20,ios::beg);
    inFile>>buff;
    memcpy(&tshort,buff,sizeof(unsigned short));
    cout<<"format:"<<tshort<<endl;

    inFile.seekg(4,ios::beg);
    inFile>>ww.file_size;
    inFile.seekg(22,ios::beg);
    inFile>>ww.channel;
    inFile.seekg(24,ios::beg);
    cout<<ww.id<<endl<<ww.file_size<<endl<<ww.channel<<endl<<ww.frequency;
    }
    return 0;
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM