我的命令行输入中存在*
字符的问题。
命令如下:
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;
}
答案 0 :(得分:6)
因为Shell expansion,*
被shell扩展为当前目录中的所有文件,你应该使用
2.exe input.txt output.txt '*' 2
或
2.exe input.txt output.txt \* 2