在c ++中错误地读取.dat文件

时间:2018-05-12 16:24:20

标签: c++ file

我是c ++的新手,已经有了一个关于文件i / o的模块。我已经从我的教科书中逐字复制了这个例子,它似乎没有按预期工作,我不确定问题是什么;没有从程序输出的错误。

我尝试了不同的变体,并以此为例:

#include <fstream>
#include <iostream>

using namespace std;

string f = "marks.dat"; ifstream file;


int main() {
    int first = 0;
    file.open(f);
    if(file.is_open()){
        file >> first;
        cout << first;
    } else {
    cout << "file has failed to open";
    }

    return 0;
}

.dat文件位于Assignment3.1文件夹中,编译.cpp文件。检查“file.is_open()”是错误的,我不确定是什么问题。

我的代码输出如下: Output

编辑:我已经包含了第一个= 0的声明;并包含一个file.is_open();

编辑:该文件夹的密码为: /Users/stjohn/Documents/cpp/Assignment3.1

3 个答案:

答案 0 :(得分:1)

我认为文件没有正确读取。你首先从变量得到随机数。尝试首先初始化为零,然后查看输出。你应该明白发生了什么。

第一= 0;

答案 1 :(得分:1)

当前文件未被读取,因为它未包含在程序执行的正确目录中。通过在字符串声明中使用完整文件路径,程序将能够读取该文件。

#include <fstream>
#include <iostream>

using namespace std;

string f = "/Users/stjohn/Documents/cpp/Assignment3.1/marks.dat"; ifstream file;


int main() {
    int first = 0;
    file.open(f);
    if(file.is_open()){
        file >> first;
        cout << first;
    } else {
    cout << "file has failed to open";
    }

    return 0;
}

答案 2 :(得分:0)

根据屏幕截图,我假设您正在使用Code :: Blocks for MacOS。在Project&gt;中设置工作目录属性&gt;构建目标&gt;执行工作目录。