C ++将参数传递给带有多个感叹号的主函数

时间:2015-10-25 23:11:00

标签: c++ parameter-passing

我有以下c ++代码,它打印输入:

#include <iostream>
using namespace std;

int main(int argc, char** argv)
{
    cout << "Input:" << argv[1] << endl;
    return 0;
}

对于仅包含字符的输入,它可以正常工作。但是,当输入有多个感叹号时,它不会。 例如,我称我的程序为“test”。当我尝试使用“./test Hello !!”在终端中运行程序时它打印:

  

./ test Hello./test你好!
  输入:Hello./test

当我使用3个感叹号“./test Hello !!!”时,它会打印:

  

-bash:!:找不到事件

我的问题是:
1.为什么不打印“输入:你好!!”和“输入:你好!!!”? 2.对于具有多个感叹号的任何输入,如何解决这个问题?

1 个答案:

答案 0 :(得分:4)

在大多数炮弹中,!是一个特殊角色。它告诉shell从您的历史记录中运行命令(有关完整详细信息,请参阅联机帮助页)。您需要转义!或使用单个刻度,例如:

./test 'Hello!!!'