Ошибка сравнения французских символов в строке С++

Мне было интересно, может ли кто-нибудь из вас помочь мне с моей проблемой. В настоящее время у меня есть функция, которая принимает строку в стиле c, создает временную строку в стиле c++ и сохраняет в ней строку c, а также использует команду find_first_not_of для поиска недопустимых символов, некоторые из которых включают французские символы, такие как «à». Однако, когда я передаю строку, содержащую французские символы, она не распознает их как действительные.

Я использую Visual Studio 2013 в Windows 8, и несколько человек сказали мне, что проблема в том, что VS кодирует свои файлы иначе, чем кодирует ввод из командной строки, но я не знаю, как это исправить. Кто-нибудь из вас знает, как я это сделаю? Или это совсем другая проблема с моим кодом?

Мой код для функции выглядит следующим образом:

bool checkValidCharacters(const char* input)
{
    std::string checkString(input);
    bool validCharacters = false;
    std::size_t found = checkString.find_first_not_of("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZàâäèêëîôùûüÿçÀÂÄÈÉÊÎÏÔÙÛÜŸÇ-. ");
    if (found != std::string::npos)
    {
        printf("Error: Invalid character: %c", input[found]);
    }
    else
    {
        printf("All characters valid\n");
        validCharacters = true;
    }
    return validCharacters;
}

Огромное спасибо.


person Hayden Taylor    schedule 10.03.2015    source источник
comment
если à является Unicode, вам нужно использовать wstring   -  person NathanOliver    schedule 10.03.2015
comment
stackoverflow.com/questions/388490 / (обратите внимание, что мой тест с символом евро UTF-8 не отображался должным образом с растровым шрифтом, но все же работал).   -  person chris    schedule 10.03.2015
comment
Просто чтобы убедиться, что ваш код работает нормально rextester.com/UGB48805. (Как вы сказали, проблема должна быть в чем-то другом). Это может помочь вам stackoverflow.com/questions/12276757/ или vlasovstudio.com /fix-file-encoding   -  person hlscalon    schedule 10.03.2015