C++: Clion中C++使用當前目錄讀取文件失敗

#include <iostream>

#include "Complex.h"
#include <string>
#include <fstream>
#include <limits>
using namespace std;
static const int bufferLen = 2048;
// 二進制文件的操作
bool CopyFile(const string& src, const string& dest) {// 引用是爲了避免創建副本,提高性能
    // 打開源文件和目標文件
    // 源文件採用二進制讀的方式打開
    // 目標文件採用二進制寫的方式打開
    ifstream in(src.c_str(), ios::in | ios::binary);
    ofstream out(dest.c_str(), ios::out | ios::binary | ios::trunc);
    // 判斷文件打開是否成功, 失敗返回false
    if (!in || !out) {
        return false;
    }
    // 從源文件中讀取數據,寫到目標文件中
    // 通過讀取源文件的EOF來判斷我們讀寫的操作是否結束。
    char temp[bufferLen];
    while (!in.eof()) {
        in.read(temp, bufferLen);
        streamsize count = in.gcount();
//        auto count = in.gcount();
        out.write(temp, count);
    }
    // 關閉我們的源文件和目標文件
    in.close();
    out.close();
    return true;
}

該代碼是簡單的複製Clion某個工程下的mp3文件拷貝爲另一個mp3文件。

但是運行後發現失敗:

 

並且也沒看見生成的文件。

在 Clion 中,cpp 源文件經編譯後生成可執行文件,放在 cmake-build-debug 目錄下,也就是最終的執行目錄,所以文件相對路徑應該是 ../

或者使用文件的絕對路徑也是可以的。

當然,如果相對路徑或絕對路徑太長也不爽,

可以這樣設置:

CLion 在Edit Configurations, 選擇對應的項目, 然後在Working dictionary裏選擇相應的程序目錄

 選擇爲當前項目就行了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章