如何从命令提示符将字符 `^` 传递给我的程序?
How to pass character `^` to my program from commnd prompt?
我有一个关于计算器的简单示例:
输入第一个操作数,然后输入运算符,如果运算符是一元运算符则不需要输入第二个。所以打印结果例如:如果数字不需要第二个操作数,则为正方形。
输入可以从命令提示符传递到程序中,否则在程序从输入流启动后。
我想将输入作为参数传递给程序的原因是我有时想从命令提示符调用我的程序,所以我可以发出:calc 57 + 12
+ 输入:我得到 69.
该程序运行良好,但是当涉及到平方运算符时,在我的例子中我使用了 ^
它可以从输入流 (std::cin) 中获取但是如果我通过命令提示符传递它我不能?!
int main(int argc, char* argv[]){
int a = 0;
int b = 0;
char op = '[=10=]';
if(argc < 2){
std::cout << "a: ";
std::cin >> a;
std::cout << "op: ";
std::cin >> op;
switch(op){
case '^':
std::cout << a << " ^2 " << " = "
<< a * a << std::endl;
break;
case '+':
std::cout << "b: ";
std::cin >> b;
std::cout << a << " + " << b << " = "
<< a + b << std::endl;
break;
case '-':
std::cout << "b: ";
std::cin >> b;
std::cout << a << " - " << b << " = "
<< a - b << std::endl;
break;
case '*':
std::cout << "b: ";
std::cin >> b;
std::cout << a << " * " << b << " = "
<< a * b << std::endl;
break;
case '/':
std::cout << "b: ";
std::cin >> b;
std::cout << a << " / " << b << " = "
<< a / b << std::endl;
break;
case '%':
std::cout << "b: ";
std::cin >> b;
std::cout << a << " % " << b << " = "
<< a % b << std::endl;
break;
}
}
else{
a = atoi(argv[1]);
op = argv[2][0];
}
if(argc == 3){
std::cout << "argc = 3" << std::endl;
std::cout << "op: " << op << std::endl;
switch(op){
case '^':
std::cout << a << " ^2 " << " = "
<< a * a << std::endl;
break;
}
}
else
if(argc == 4){
b = atoi(argv[3]);
switch(op){
case '+':
std::cout << a << " + " << b << " = "
<< a + b << std::endl;
break;
case '-':
std::cout << a << " - " << b << " = "
<< a - b << std::endl;
break;
case '*':
std::cout << a << " * " << b << " = "
<< a * b << std::endl;
break;
case '/':
std::cout << a << " / " << b << " = "
<< a / b << std::endl;
break;
case '%':
std::cout << a << " % " << b << " = "
<< a % b << std::endl;
break;
}
}
std::cin.get()
return 0;
}
如果我从命令提示符问题:calc 7 ^
我没有得到 49
但命令问我 more ?
.
这实际上不是 C++ 问题,而是终端问题。在 cmd 和 windows 批处理中 ^
是续行符号。
要真正传递 ^
你必须转义它。而转义的符号是……[[鼓声]]^
。因此,您必须在 cmd 中编写 ^^
才能实际将 ^
传递给您的程序。
^ 字符对 C++ 来说没有什么特别之处。将它作为任何其他字符处理没有任何问题。您的问题源于您的 shell。但是,您没有告诉我们您正在使用哪个 shell。由于您在使用 ^ 时遇到问题,我猜您 运行 您的程序在 Windows 环境中。在 Windows 命令提示符中,^ 是转义符。您正在转义下一个字符(cmd 提示丢弃 ^ 并将下一个字符视为:一个字符)所以这就是为什么您在程序的参数中找不到 ^ 本身的原因。
可在此处找到有关特殊 shell 字符的更多信息:
我有一个关于计算器的简单示例:
输入第一个操作数,然后输入运算符,如果运算符是一元运算符则不需要输入第二个。所以打印结果例如:如果数字不需要第二个操作数,则为正方形。
输入可以从命令提示符传递到程序中,否则在程序从输入流启动后。
我想将输入作为参数传递给程序的原因是我有时想从命令提示符调用我的程序,所以我可以发出:
calc 57 + 12
+ 输入:我得到 69.该程序运行良好,但是当涉及到平方运算符时,在我的例子中我使用了
^
它可以从输入流 (std::cin) 中获取但是如果我通过命令提示符传递它我不能?!int main(int argc, char* argv[]){ int a = 0; int b = 0; char op = '[=10=]'; if(argc < 2){ std::cout << "a: "; std::cin >> a; std::cout << "op: "; std::cin >> op; switch(op){ case '^': std::cout << a << " ^2 " << " = " << a * a << std::endl; break; case '+': std::cout << "b: "; std::cin >> b; std::cout << a << " + " << b << " = " << a + b << std::endl; break; case '-': std::cout << "b: "; std::cin >> b; std::cout << a << " - " << b << " = " << a - b << std::endl; break; case '*': std::cout << "b: "; std::cin >> b; std::cout << a << " * " << b << " = " << a * b << std::endl; break; case '/': std::cout << "b: "; std::cin >> b; std::cout << a << " / " << b << " = " << a / b << std::endl; break; case '%': std::cout << "b: "; std::cin >> b; std::cout << a << " % " << b << " = " << a % b << std::endl; break; } } else{ a = atoi(argv[1]); op = argv[2][0]; } if(argc == 3){ std::cout << "argc = 3" << std::endl; std::cout << "op: " << op << std::endl; switch(op){ case '^': std::cout << a << " ^2 " << " = " << a * a << std::endl; break; } } else if(argc == 4){ b = atoi(argv[3]); switch(op){ case '+': std::cout << a << " + " << b << " = " << a + b << std::endl; break; case '-': std::cout << a << " - " << b << " = " << a - b << std::endl; break; case '*': std::cout << a << " * " << b << " = " << a * b << std::endl; break; case '/': std::cout << a << " / " << b << " = " << a / b << std::endl; break; case '%': std::cout << a << " % " << b << " = " << a % b << std::endl; break; } } std::cin.get() return 0; }
如果我从命令提示符问题:
calc 7 ^
我没有得到49
但命令问我more ?
.
这实际上不是 C++ 问题,而是终端问题。在 cmd 和 windows 批处理中 ^
是续行符号。
要真正传递 ^
你必须转义它。而转义的符号是……[[鼓声]]^
。因此,您必须在 cmd 中编写 ^^
才能实际将 ^
传递给您的程序。
^ 字符对 C++ 来说没有什么特别之处。将它作为任何其他字符处理没有任何问题。您的问题源于您的 shell。但是,您没有告诉我们您正在使用哪个 shell。由于您在使用 ^ 时遇到问题,我猜您 运行 您的程序在 Windows 环境中。在 Windows 命令提示符中,^ 是转义符。您正在转义下一个字符(cmd 提示丢弃 ^ 并将下一个字符视为:一个字符)所以这就是为什么您在程序的参数中找不到 ^ 本身的原因。
可在此处找到有关特殊 shell 字符的更多信息: