C++作業2-檔案流對象__C++

來源:互聯網
上載者:User
作業要求 產生隨機資料檔案 text.txt。 從檔案 text.txt 中讀取資料後排序。 將排序好的資料寫入 in.txt 檔案。 解決在主程式檔案中載入多個標頭檔時,命名衝突問題。 解決方案 用隨機產生函數產生資料寫入檔案流, 然後再讀取檔案流,講資料存入 num[],排序, 將 num[] 中資料寫入新檔案, 不在全域開啟 std 命名空間,在調用時使用 std::xxx 等方法。 代碼 main.cpp
////  main.cpp//  f-work2////  Created by ZYJ on 2017/3/14.//  Copyright © 2017年 ZYJ. All rights reserved.//#include <iostream>#include <string>#include "file.hpp"int main(int argc, const char * argv[]){    int n;    std::cin >> n;    int *num = new int[n];    std::string text = "text.txt";      std::string in = "in.txt";    File f = File(text, n, num);    f.randDate();    f.sortDate();    File f_ = File(in, n, num);    f_.coutDate();    return 0;}
file.hpp
////  file.hpp//  f-work2////  Created by ZYJ on 2017/3/14.//  Copyright © 2017年 ZYJ. All rights reserved.//#ifndef file_hpp#define file_hpp#include <stdio.h>#include <string>#include <fstream>class File{    std::string fileName;   //  檔案名稱    int n;                  //  資料量    int *num;public:    File(std::string fileName_, int n_, int *num_) : fileName(fileName_), n(n_), num(num_) {}    void randDate();                    //  產生隨機資料檔案 fileName    void sortDate();                    //  讀取檔案 fileName 中的隨機序列並排序,存入 num    void coutDate();                    //  將 num 中資料存放區到 fileName 檔案中    int random(double st, double ed);   //  產生 st~ed 隨機數};#endif /* file_hpp */
file.cpp
////  file.cpp//  f-work2////  Created by ZYJ on 2017/3/14.//  Copyright © 2017年 ZYJ. All rights reserved.//#include "file.hpp"#include <algorithm>#include <ctime>#include <cstdlib>#define S 0#define T 1000000//  產生隨機資料檔案void File::randDate(){    std::fstream fp(fileName, std::ios::out);    while (!fp)    {        fp.open(fileName, std::ios::out);    }    srand(unsigned(time(0)));    int k = n;    while (k--)    {        fp << random(S, T) << '\n';    }    fp.close();}//  讀取資料檔案,存入num,並排序void File::sortDate(){    std::fstream fp(fileName, std::ios::in);    while (!fp)    {        fp.open(fileName, std::ios::in);    }    int k = 0;    while (fp >> num[k++]) {}    std::sort(num, num + n);    fp.close();}//  將 num 中資料存入檔案中void File::coutDate(){    std::fstream fp(fileName, std::ios::out);    while (!fp)    {        fp.open(fileName, std::ios::out);    }    for (int i = 0; i < n; i++)    {        fp << num[i] << '\n';    }    fp.close();}//  產生隨機數,隨機數在 st~ed 之內int File::random(double st, double ed){    return (int)st + (ed - st) * rand() / (RAND_MAX + 1.0);}
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.