2016-03-09 283 views
0

我在閱讀文件時遇到了一個簡單的問題。我正在嘗試打開一個包含在資源文件中的文件,如.txt文件。當我試圖編譯它並從結構中打印時,問題就出現了。Cpp - 無法打開文件

#include <iostream> 
#include <fstream> 

struct mystruct 
{ 
double x, y; 
int a; 

}; 


int main() 
{ 
using namespace std; 

ifstream file("file.txt"); 
double x, y; 
int a; 
if (file.is_open()) { 
    while (file >> x >> y >> a) 
    { 
     mystruct m; 
     m.x; 
     m.y; 
     m.a; 

     cout << m.x << endl << m.y << endl << m.a << endl; 
    } 
} 
else 
    cout << "Cannot open the file"; 

return 0; 
} 

我使用的有線換擋因爲在我的文件我有我需要存儲在我的結構三個不同的變量三個不同的值。

爲什麼我的文件不可見並且無法打開?

這裏是FILE.TXT源鏈接:http://wklej.org/hash/05290721372/

和這裏是我的CMakeLists.txt:

cmake_minimum_required(VERSION 3.3) 
project(reading_from_file) 

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") 

set(SOURCE_FILES main.cpp) 
add_executable(reading_from_file ${SOURCE_FILES}) 

也許這裏的問題是,爲什麼該文件是不可見的。

謝謝你的幫助!

回答

2

首先:抱歉我的英文不好。

第二:你確定file.txt位於正確的目錄嗎?

那麼讀取權限呢?試用

chmod ugo+r file.txt 

對我來說它的工作;或者至少打開文件。

不過,我不認爲程序的工作像您期望的:它讀取值,但是版畫,每一次,這是在「M」成員inizialized三個隨機值。

你應該這樣

ifstream file("file.txt"); 
if (file.is_open()) { 
    mystruct m; 
    while (file >> m.x >> m.y >> m.a) 
     cout << m.x << endl << m.y << endl << m.a << endl; 
} 
else 
    cout << "Cannot open the file"; 
+0

嗨改變它,謝謝您的回答。 我真的不知道爲什麼它沒有想開了,但我會安裝Linux並在接下來的幾分鐘內把Windows中的bin。 :) Ps:權限很好 – axeMaltesse

+0

夢幻般的想法。 :) 我開玩笑,當然。 而原諒我:我習慣了在Unix/Linux,我不認爲你的系統可能是沒有「文件模式」。 – max66

+0

不用擔心。它的窗戶無論如何:第 – axeMaltesse