2015-07-18 19 views
7

Tôi có tệp .txt trong thư mục dự án của mình mà tôi đã tạo và điền dữ liệu.CLION C++ không thể đọc/mở tệp .txt trong thư mục dự án

cấu trúc thư mục trông giống như:

/Users/asd/ClionProjects/ProjectWithTemplates/ 
main.cpp 
cmake 
twoday.txt 

đây là mã của tôi:

#include <iostream> 
#include <array> 
#include <cmath> 
#include <fstream> 


using namespace std; 

/* print array prototype */ 
template <size_t N> 
void printArray(const array<double , N> & arr); 

/* mean function prototype */ 
template <size_t N> 
double meanArray(const array<double , N> & arr); 

/* standard deviation prototype */ 
template <size_t N> 
double sDeviation(const array<double , N> & arr); 

int main() { 

    string date1; 
    string date2; 

    array<double, 24> day1Temps; 
    array<double, 24> day2Temps; 
    array<double, 3> testarr = {75,70,65}; 

/* TESTING PURPOSES */ 
    printArray(testarr); 
    sDeviation(testarr); 
    cout << "standard deviation of array is: " << sDeviation(testarr) << endl; 
    cout << "mean of array is: " << meanArray(testarr) << endl; 
/* END TESTING */ 

    ifstream inputFile; 
    inputFile.open("twoday.txt"); 

    if(inputFile.is_open()) 
    { 
     inputFile >> date1; 
     inputFile >> date2; 

     for(int i = 1; i < day1Temps.size(); ++i) 
     { 
      inputFile >> day1Temps[i]; 
     } 

     for (int j = 1; j < day2Temps.size(); ++j) { 
      inputFile >> day2Temps[j]; 
     } 
    } else cout << "File unable to open. File does not exist." << endl; 


    return 0; 
} 

/* print array defination */ 
template <size_t N> 
void printArray(const array<double , N> & arr){ 

    for(const auto & i : arr) 
    { 
     cout << i << " "; 
    } 
    cout << endl; 
} 

/* mean function defination */ 
template <size_t N> 
double meanArray(const array<double , N> & arr){ 

    double sum; 

    for (const auto & i : arr) { 
     sum+=i; 
    } 

    return sum/arr.size(); 
} 

/* standard deviation defination */ 
template <size_t N> 
double sDeviation(const array<double , N> & arr){ 

    double mean = meanArray(arr); 
    double total; 

    for (const auto & i : arr){ 
     total+=pow(i - mean, 2); 
    } 
    return sqrt(total/arr.size()); 
} 

eveything khác hoạt động tốt bên cạnh tập tin của tôi IO. Rất lạ.

thêm một số chi tiết .............. chi tiết khác? :(

+0

Tôi nghĩ rằng để giải quyết vấn đề của bạn, bạn sẽ phải gửi cho chúng tôi cấu trúc tập tin của bạn ... –

+0

lẽ IDE của bạn đặt khác thư mục làm việc. –

+0

Tôi hiện đang xem xét điều đó. tất cả mọi thứ tôi đã thấy nói rằng nó trông bên trong thư mục dự án của nó. – Rekumaru

Trả lời

0

nếu inputFile.is_open() luôn trả false, inputFile.open("twoday.txt"); không được mở các tập tin một cách chính xác, có lẽ bởi vì nó không thể tìm thấy "twoday.txt"

Hãy thử thiết lập một đường dẫn rõ ràng như "c:/path/twoday.txt" hoặc "/path/twoday.txt" nếu bạn đang sử dụng Linux. Bạn có thể Ngoài ra, hãy thử viết một tệp thay vì xem nó xuất hiện ở đâu, hoặc một cái gì đó kỳ lạ hơn để trả lại đường dẫn hiện tại

+0

Tôi sẽ cố gắng ghi vào một tập tin. – Rekumaru

+0

đó là chính xác những gì đang xảy ra. Vì bạn có câu trả lời đầu tiên tôi sẽ đưa nó cho bạn. Cảm ơn – Rekumaru

2

Tôi sẽ giả định rằng thư mục làm việc đang được đặt thành đường dẫn đến tệp thi hành thay vì Tệp CMakeLists.txt.

Để sửa lỗi này, DÙ:

  1. đặt .txt bên cạnh các tập tin thực thi
  2. Explicitly set the working directory for debugging
  3. Nhập đường dẫn đầy đủ đến tập tin .txt như được giải thích trong câu trả lời của ti7.
0

Tôi đã tìm hiểu cách thiết lập CMake để xây dựng trong thư mục dự án của bạn trong CLion.

  1. Go to file: Cài đặt
  2. Bây giờ điều hướng đến xây dựng, thực hiện, phần triển khai
  3. Có dưới tòa nhà, bạn có thể chỉ định xây dựng đường dẫn tương đối để dự án của bạn

Tôi chỉ đặt mìn đến ". \ build" và giờ nó luôn tích hợp vào dự án của tôi bao gồm cả tệp bạn tạo.

2

Clion tìm tệp đầu vào và ghi tệp đầu ra vào thư mục Gỡ lỗi. Nếu bạn đặt các tập tin đầu vào của bạn trong đó nó sẽ thấy chúng.

+0

Yep điều này đã giải quyết được vấn đề của tôi, cảm ơn bạn !!!!! –

0

Các câu trả lời khác xác định vấn đề, điều này thực sự không liên quan gì đến CLion. Khi bất kỳ tệp thực thi nào khởi động, nó có một thư mục làm việc hiện tại. Theo mặc định, đó là thư mục nơi tệp thực thi. Nếu tệp bạn muốn đọc cuộc sống ở bất kỳ nơi nào khác, bạn phải thực hiện một trong ba điều sau:

  • Sử dụng tên đường dẫn đầy đủ cho tệp của bạn. Loại đau nếu bạn gõ vào tên tập tin lúc chạy.
  • Sao chép tệp dữ liệu của bạn về nhà của nhà thực thi. Nhưng sau đó bạn sẽ cần phải sao chép nó một lần nữa khi bạn xây dựng bản phát hành hơn là bản dựng gỡ lỗi.
  • Sử dụng giao diện người dùng rất đẹp của CLion để đặt thư mục làm việc hiện tại của tệp thi hành khi khởi động thành một giá trị khác, chẳng hạn như thư mục dự án hoặc dữ liệu của bạn.

tôi đã tạo ra một đoạn video hướng dẫn ngắn gọn về cách thực hiện cuối cùng: https://youtu.be/dTtZEAfh_LM

Các vấn đề liên quan