我的命令行输入中有*
字符的问题。
命令如下:
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