2016-03-09 80 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