C++ argv 参数不从命令行解析 *

c++ argv argument not parsing * from command line

本文关键字:命令行 argv 参数 C++      更新时间:2023-10-16

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

命令如下:

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;
}

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

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

2.exe input.txt output.txt * 2