c ++ argv参数没有从命令行解析*

时间:2015-04-25 12:16:18

标签: c++ command-line-arguments

我的命令行输入中存在*字符的问题。

命令如下:

2.exe input.txt output.txt + 2
2.exe input.txt output.txt - 2
2.exe input.txt output.txt * 2

除最后一个外,一切都很完美。不知何故,它没有从命令行获取*字符。如果我放'*'它有效,但这不是主意。

我搜索了所有的网页,我得到的最接近的是某些地方被提到,但不知道怎么做。这是我的代码

#include <iostream>
#include <fstream>
#include <cstdlib>

using namespace std;

int main(int argc, char * argv[])
{

    ifstream infile(argv[1]);
    ofstream outfile(argv[2]);



    if (infile.is_open() && infile.good()) {
        int num;
        int sum = 0;
        string arg = string(argv[3]);
        int val = atoi(argv[4]);


        while(infile >> num)
        {

        if(arg == "+") sum = num + val;
        else if(arg == "-") sum = num - val;
        else sum = num * val;



        cout << "SUM: " << num << endl;
        cout << "SUM: " << sum << endl;
        outfile << sum << " ";
        }

        outfile.close();


    } else {
        cout << "Faila ne se otvarq";
    }
    return 0;
}

1 个答案:

答案 0 :(得分:6)

因为Shell expansion*被shell扩展为当前目录中的所有文件,你应该使用

2.exe input.txt output.txt '*' 2

2.exe input.txt output.txt \* 2