我試圖編寫一些代碼,只允許在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