C ++将参数传递给带有多个感叹号的主函数
C++ Passing argument into main function with multiple exclamation points
我有以下 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!
Input:Hello./test
当我使用 3 个感叹号“./test Hello!!!”时,它会打印:
-bash: !: event not found
我的问题是:
1、为什么不打印"Input:Hello!!"和"Input:Hello!!!"?
2. 如何解决带有多个感叹号的输入?
在大多数 shell 中,!
是一个特殊字符。它告诉 shell 到 运行 来自您的历史记录的命令(有关详细信息,请参阅联机帮助页)。您需要转义 !
或使用单个勾号,例如:
./test 'Hello!!!'
我有以下 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!
Input:Hello./test
当我使用 3 个感叹号“./test Hello!!!”时,它会打印:
-bash: !: event not found
我的问题是:
1、为什么不打印"Input:Hello!!"和"Input:Hello!!!"?
2. 如何解决带有多个感叹号的输入?
在大多数 shell 中,!
是一个特殊字符。它告诉 shell 到 运行 来自您的历史记录的命令(有关详细信息,请参阅联机帮助页)。您需要转义 !
或使用单个勾号,例如:
./test 'Hello!!!'