向main函数传递带有多个感叹号的参数

C++ Passing argument into main function with multiple exclamation points

本文关键字:感叹 参数 函数 main      更新时间:2023-10-16

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

#include <iostream>
using namespace std;
int main(int argc, char** argv)
{
    cout << "Input:" << argv[1] << endl;
    return 0;
}

对于仅由字符组成的输入,它工作得很好。但是,当输入有多个感叹号时,则不会。例如,我称我的程序为"test"。当我尝试在终端中运行程序时使用"。"/test Hello!!"输出:

。/测试你好。/测试你好!
输入:Hello./测试

当我使用3个感叹号"。/test Hello!! ",它打印:

-bash: !: event not found

我的问题是:
1. 为什么不打印"Input:Hello!!"answers"Input:Hello!!!"?
2. 对于任何带有多个感叹号的输入,如何解决这个问题?

在大多数shell中,!是一个特殊字符。它告诉shell运行历史记录中的命令(详细信息请参阅手册)。您需要转义!或使用单个刻度,如:

./test 'Hello!!!'