c++ - 命令行测试程序 -> 只生产第一部分

标签 c++ command-line-arguments

类里面的作业是测试提供的参数。编写(添加到本主题)的代码有效(在它运行的意义上),但它只产生第一个单词或一组单词。

代码:

#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/

相关文章:

c++ - 每次我重新编译并运行程序时,都从C++中的HANDLE获取不同的地址?

python - 如何使用 python argparse 解析多个嵌套的子命令?

linux - bash 命令行参数到一个数组中,并根据参数值对数组进行子集化

c++ - 如何通过cpp程序将参数传递给bash脚本

gdb - gdb 的 --args 的 lldb 等价物是什么?

C++/WinAPI - 从 DWORD 中删除标志(按位运算符?)

c++ - 使用 Qt::X11BypassWindowManagerHint 标志时窗口没有获得焦点

c++ - 终止无尽的 while 循环

python - 如何使用 argparse 添加对 Python 脚本多行参数的支持?

c++ - 什么是 std::move(),什么时候应该使用它?