Что здесь происходит, вы не можете сравнить, если (mychar1 == 'ä' || mychar2 == 'Ä') в C ++? - PullRequest
0 голосов
/ 23 марта 2010

Я пытаюсь сравнить эти два символа, но на win 32 Visual Studio 2008:

if(mychar1 ==  'ä'  || mychar2 == 'Ä')

Ошибка:

Ошибка отладки!

Файл: f \ dd\ vctools \ crt_bld \ self_x86 \ crt \ src \ xstring Строка 1575

Выражение: строковый индекс вне диапазона

1 Ответ

6 голосов
/ 23 марта 2010

Работает на моем компьютере:

#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], вы проверили, что строка не пуста?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...