C ++使用命令行输入txt文件,但无法打开文件

时间:2019-07-18 09:56:00

标签: c++ command-line

我正在尝试使用命令行参数打开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上写就没问题。

1 个答案:

答案 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通常被认为更灵活。因此,除非您有充分的理由强迫用户使用命名文件,否则它可能是最佳选择。