在Mac OSX上使用fstream C ++无法打开文件

时间:2015-10-08 19:02:03

标签: c++ macos file fstream

好吧,所以我可以在早些时候在我的节目中宣誓这个,但现在我被std::fstream驱使了。我只想从命令行参数中打开一个文件,即

./main Program1.S

应该打开Program1.S文件并扫描它。

以下是我在代码中设置open_file()函数的方法:

#include <string>
#include <iostream>
#include <fstream>

void open_file(std::fstream &ifp, std::string file_name) {
    ifp.open(file_name, std::ios::in | std::ios::out);
    if(ifp.fail()) {
        std::cout << "File not found." << std::endl;
        exit(1);
    }
}

void close_file(std::fstream &ofp) {
    if(ofp.is_open()) {
        ofp.close();
        return;
    }
    std::cout << "This file is not currently open" << std::endl;
}

int main(int argc, char * argv[]) {
    std::string in_name;
    in_name = argv[1];
    std::fstream ifp;
    open_file(ifp, in_name);
    // do some processing
    close_file(ifp);
    return 0;
}

现在,我使用编译我的程序(不幸的是我需要使用c ++ 03):g++ -g -std=c++03 -Wall -pedantic main.cpp -o main

编译工作并没有错误,但在使用./main Program1.S运行程序时,它会转到File not found中的open_file()。我甚至检查了argv[1]中的内容,它绝对是当前工作目录中的文件。我这样做的方式有问题吗?

1 个答案:

答案 0 :(得分:0)

检查以确保您的文件已添加到项目文件夹中。否则,您需要在计算机中指定文件路径。 “/ Mac HD / Documents / myfile”。程序不知道如何处理没有文件路径的外部文件名。希望这会有所帮助。