2015-09-24 105 views
-3

我对C++很陌生,目前正在编写一个与此问题无关的caesar cipher程序,但我无法弄清楚为什么我得到这段代码的错误。C++检查for循环中的字符串是否相等

char alph[] = "ABCDEFGHIJKLMANOPQRSTUVWXYZ"; 
string key; 
cout << "Enter your key: \n"; 
getline(cin, key); 
int numKey; 
for(int j = 0; j<= 26;j++){ 
    if (alph[j] == key){ 
     numKey = j; 
    } 
} 

还有更多的多数民众赞成在我的主要功能不是必要的,但我得到一个错误与if(ALPH [J] == k)的声明中说:“错误:无效的操作数为二进制表达式(‘廉政’和'string'(又名'basic_string,allocator>'))“如果有人能告诉我我在做什么错误,将不胜感激。提前致谢。

+0

字母表中的26个字符,由于<=',程序中的27个循环。这不是致命的,因为终止零字节,但很可能不是你想要的。 – DevSolar

+0

我知道这是一个没有真正应用的编程练习。但看到人们假设一个26字母的拉丁字母足以支持*任何事情*使我的皮肤爬行... ;-) – DevSolar

+0

这让我感到困惑,为什么你认为你可以决定什么是,什么时候不需要知道问题是什么? –

回答

1

您正在比较string与单个char

如果你只是想读一个字符,声明char ccin >> c

1

除了循环溢出读它,您要比较的字符和字符串,那是你的问题。 关键应该是只有一个字符?如果是这样,把它变成一个字符,它会更好。

+1

你应该详细阐述一下“循环溢出”。 – Dukeling

+0

我试图将其更改为字符,我仍然收到错误。你能告诉我在哪里以及如何去改变它。 –

+0

@MatthewHanson:因为我们不知道你想做什么,所以要展示如何正确地做到这一点有点困难。注意这个问题:“关键”应该只是一个字符吗?答案是至关重要的。你是如何尝试“改变它为char”的? 'key [0]'将会是*在检查'key.length()> 0'后的方式...... – DevSolar