类里面的作业是测试提供的参数。编写(添加到本主题)的代码有效(在它运行的意义上),但它只产生第一个单词或一组单词。
代码:
#include <fstream>
#include <iostream>
using namespace std;
int main ( int argc , char *argv[] )
{
if(argc > 1 )
{
cout << argv[1] << endl;
}
else
{
return -1;
}
ifstream infile(argv[1]);
if (infile.is_open())
{
string words;
while (infile >> words)
{
cout << words <<endl;
}
}
else
{
return -1;
}
infile.close();
}
给定的行是:
“这是真的”“这是事实”
它(代码)产生的结果是:
这是真的
我想要的结果是:
这是真的,这是事实
另一个例子:
给定行:
检查这个东西是否有效
使用此代码的输出:
检查
想要的输出:
检查这个东西是否有效
我的问题是我是否没有在我的代码中添加一些会产生整行的东西。另外,我知道我的代码不会在输出中添加“,”,但我想一次只担心一个问题。
更多信息:
文件被读取,如果没有 arg,那么它不会产生任何东西,如果只有一个 arg,它也可以工作。他的代码停止工作超过一个 arg 和引号。
最佳答案
这一行 cout << argv[1] << endl;
会将您的第一个命令行参数(在参数零之后,即应用程序名称)打印到屏幕上。用双引号引起来的命令行参数被视为单个参数,因此对于您的第一个示例 argv[1] = This is true
第二个 argv[1] = check
.这就是为什么你看到你所看到的。
如果你理解了这一点,你应该能够弄清楚如何让它打印出整个东西。即命令行参数 > 1。
关于c++ - 命令行测试程序 -> 只生产第一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41879479/