Я работаю над проектом расшифровки Цезаря, и в функции CaesarDecipher я продолжаю получать эту ошибку при компиляции:
ошибка: нет совпадения для 'operator==' в 'textInit.std::basic_string‹_CharT, _Traits, >_Alloc>::operator[] [с _CharT = char, _Traits = std::char_traits, _Alloc >= std:: распределитель](((длинное целое число без знака)i)) == алфавит[j]'
Вот код этой функции:
string CipherMessage::CaesarDecipher(string key)
{
int keyValue;
int charValue;
string textInit = m_text;
string textFinal;
// Initializes an array containing the alphabet. A=index 0, B=index 1, etc
string alphabet[26] = {"A","B","C","D","E","F","G","H","I","J","K","L","M","N","\
O","P","Q","R","S","T","U","V","W","X","Y","Z"};
for (int i=0; i<=25; i++){
if (alphabet[i] == key)
keyValue = i;
}
for (int i=0; i<=textInit.length(); i++){
for (int j=0; j<=25; j++){
if (textInit[i] == alphabet[j]) // Error occurs here
charValue = j;
}
charValue = (charValue+keyValue)%26;
for (int j=0; j<=25; j++){
if (charValue == j)
textFinal += alphabet[j];
}
}
cout << "Final " << textFinal << endl;
return textFinal;
}
Кто-нибудь может помочь?
std::string
с однимchar
. - person πάντα ῥεῖ   schedule 30.03.2015for (int i = 0; i < 26; i++) {
- person Evan Carslake   schedule 30.03.2015string alphabet[26]
— это 26 полных строк. Используйтеstring alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
- person deviantfan   schedule 30.03.2015char
:textInit[i]
. - person   schedule 30.03.2015