我有以下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.对于具有多个感叹号的任何输入,如何解决这个问题?
答案 0 :(得分:4)
在大多数炮弹中,!
是一个特殊角色。它告诉shell从您的历史记录中运行命令(有关完整详细信息,请参阅联机帮助页)。您需要转义!
或使用单个刻度,例如:
./test 'Hello!!!'