我试图编写一些代码,只允许在argv [1]参数中输入四个字母之一。如果它是另一个字母,字母q应该出现。C++只允许某些参数放置在argv [1]
所以香港专业教育学院的书面
#include <iostream>
#include <cstdlib>
char D, A , R, B;
if(argv[1] != D||A||R||B)
{
cout << "Q" << endl;
return(0);
}
任何人都可以请帮我
我试图编写一些代码,只允许在argv [1]参数中输入四个字母之一。如果它是另一个字母,字母q应该出现。C++只允许某些参数放置在argv [1]
所以香港专业教育学院的书面
#include <iostream>
#include <cstdlib>
char D, A , R, B;
if(argv[1] != D||A||R||B)
{
cout << "Q" << endl;
return(0);
}
任何人都可以请帮我
这是不可能在C++中。你必须
if (argv[1] != D && argv[1] != A && ...)
,一般最好是检查有多少个参数其实有(虽然argv[0]
和argv[1]
始终存在)。
而且,你缺一main()
功能,因此甚至没有char *argv[]
定义:
int main (int argc, char *argv[]) {
...
}
更不用说,你不能描述像这样的全局范围内的执行流程... – 2012-07-25 13:13:02
@VladLazarenko:固定的。 – 2012-07-25 13:19:05
Downvote for ...究竟是什么?哦,是的,在互联网上,没有人知道你是一只狗。 – 2012-07-25 13:26:22
这if(argv[1] != D||A||R||B)
不正确的语法
D
,A
,R
和B
没有已被初始化为任何东西!他们就是你所说的变量。
也没有main()
功能。你在这里错过了很多,但我会回答如何检查正确的char
。
你可能会得到更好的一个switch statement
服务:
switch (*argv[1])
{
case 'D':
case 'A':
case 'R':
case 'B':
cout << "Not Q" << endl;
break;
case 'Q':
cout << "We have a Q" << endl;
break;
default:
cout << "unknown char" << endl;
break;
}
还有很多其他的事情,我们可以进入这里,比如如何正确地构建一个程序或者一般的C/C++的问题,但这应该至少让你起步。
但'argv [1]'不是字符 – 2012-07-25 13:17:03
@ phresnel:对不起'* argv [1]'...甚至strcmp ..但这个问题还有很多它。 – 2012-07-25 13:18:08
真正<需要更多字符> – 2012-07-25 13:20:20
第三种选择是在C++ 11:
#include <set>
#include <iostream>
int main(int argc, char** argv) {
if (argc < 2)
return 1;
// here is the actual check:
if (std::set<char>{'D','A','R','B'}.insert(argv[1][0]).second) {
std::cout << "Q" << std::endl;
} else {
std::cout << "OK" << std::endl;
}
return 0;
}
这使用一组临时保存所有的值和一个初始化列表把所需的值在设定。然后它试图将insert
传入的值(即argv[1][0]
)插入到集合中,并检查它是否成功插入元素(访问second
),那么它不是它,因此是“错误的”。
请注意,我们不必检查arvg[1][0]
,因为每个阵列至少有一个元素位于位置0
。
你有没有考虑阅读关于C或C++的入门书? – 2012-07-25 13:11:03
你的代码甚至没有'main()'函数。如所建议的,首先阅读一些介绍性资料。 – 2012-07-25 13:11:58
这段代码在如此多的层次上是错误的... – mihail 2012-07-25 14:09:37