Работает на моем компьютере:
#include <iostream>
int main()
{
char mychar1, mychar2;
std::cin >> mychar1 >> mychar2;
if(!std::cin)
return 2;
if(mychar1 == 'ä' || mychar2 == 'Ä' )
return 1;
std::cout << "No!\n";
return 0;
}
Обратите внимание, что указанная вами ошибка («строковый индекс вне диапазона») подразумевает, что вы пытаетесь получить доступ к символу в строке с недопустимым индексом.Что-то вроде my_str.at(10)
(или, в сборке отладки, my_str[10]
), где my_str
имеет только 10 символов.Поскольку код, который вы показали, не обращается к символам в строках, ошибка в коде, который вы не показываете.
Редактировать : код, который вы указали в комментарии к вашему вопросу делает доступ к символам в строке, используя operator[]()
.Когда вы делаете string2[0]
, вы проверили, что строка не пуста?