好吧,所以我可以在早些时候在我的节目中宣誓这个,但现在我被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]
中的内容,它绝对是当前工作目录中的文件。我这样做的方式有问题吗?
答案 0 :(得分:0)
检查以确保您的文件已添加到项目文件夹中。否则,您需要在计算机中指定文件路径。 “/ Mac HD / Documents / myfile”。程序不知道如何处理没有文件路径的外部文件名。希望这会有所帮助。