C++文件IO操作的简单示例

CppIODemo1.cpp

#include <iostream>
#include <fstream>
#include <chrono>
#define INPUT_BUFFER_SIZE 1024 * 1024
int main()
{
    using namespace std;
    cout << "Type an input file name: ";
    string filename;
    getline(cin, filename);
    ifstream ifs(filename, ifstream::in | ifstream::binary);
    if (ifs)
    {
        cout << "Type an output file name: ";
        getline(cin, filename);
        ofstream ofs(filename, ofstream::out | ofstream::binary);
        if (ofs)
        {
            cout << "Copying file..." << endl;
            char buffer[INPUT_BUFFER_SIZE];
            chrono::system_clock::time_point startTime = chrono::system_clock::now();
            while (!ifs.eof())
            {
                streamsize numberOfCharacters = ifs.read(buffer, INPUT_BUFFER_SIZE).gcount();
                ofs.write(buffer, numberOfCharacters);
            }
            chrono::system_clock::time_point endTime = chrono::system_clock::now();
            float elapsedTime = static_cast<chrono::duration<float, ratio<1, 1>>>(endTime - startTime).count();
            cout << "File copied, elapsed time: " << elapsedTime << endl;
        }
        else
            cerr << "Cannot open output file: '" << filename << "'!" << endl;
    }
    else
        cerr << "Cannot open input file: '" << filename << "'!" << endl;
    return 0;
}

 

CppIODemo2.cpp

#include <iostream>
#include <fstream>
#define INPUT_BUFFER_SIZE 1024 * 1024
int main()
{
    std::cout << "Enter an input file name: ";
    std::string filename;
    std::getline(std::cin, filename);
    std::ifstream ifs(filename, std::fstream::in);
    if (ifs.is_open())
    {
        std::cout << "Enter an output file name: ";
        std::getline(std::cin, filename);
        std::ofstream ofs(filename, std::fstream::out);
        if (ofs.is_open())
        {
            char buffer[INPUT_BUFFER_SIZE];
            while (!ifs.eof())
            {
                std::streamsize numberOfCharacters = ifs.read(buffer, INPUT_BUFFER_SIZE).gcount();
                std::cout.write(buffer, numberOfCharacters);
                ofs.write(buffer, numberOfCharacters);
            }
        }
        else
            std::cout << "Cannot open file: " << filename << std::endl;
    }
    else
        std::cout << "Cannot open file: " << filename << std::endl;
    return 0;
}

 

附带一句:http://en.cppreference.com,此站点为C/C++权威参考手册^_^若不习惯英文,可浏览此站点的中文版http://zh.cppreference.com

posted on 2018-05-12 01:03  布伊什  阅读(2068)  评论(0编辑  收藏  举报