我正在尝试使用命令行参数打开txt文件。 一直无法打开文件。
我已经在互联网上阅读了所有答案,并且我的代码与假定可行的代码完全相同。
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <sstream>
#include <fstream>
#include <cstdbool>
using namespace ::std;
using std::printf;
using std::string;
using std::getline;
int main(int argc, const char * argv[]) {
fstream infile (argv[1]);
if (infile.is_open() && infile.good()){
string line="";
while (getline(infile,line)){
cout << line << endl;
}
}else{
cout << "Failed to open file.. ";
}
return 0;
}
我一直在做
g++ main.cpp -o newtest1
./newtest1 < input.txt > output.txt
它似乎不读input.txt
,但它在output.txt
上写就没问题。
答案 0 :(得分:4)
您有两种选择
1)将输入文件重定向到标准输入
2)直接打开输入文件
您的问题是您同时在做这件事
要么这样做
1)./newtest1 < input.txt
string line="";
while (getline(cin,line)){ // read from standard input
或这个
2)./newtest1 input.txt
fstream infile (argv[1]);
if (infile.is_open() && infile.good()){
string line="";
while (getline(infile,line)){ // read from opened file
PS选项1通常被认为更灵活。因此,除非您有充分的理由强迫用户使用命名文件,否则它可能是最佳选择。