Мне было интересно, может ли кто-нибудь из вас помочь мне с моей проблемой. В настоящее время у меня есть функция, которая принимает строку в стиле 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;
}
Огромное спасибо.
à
является Unicode, вам нужно использоватьwstring
- person NathanOliver   schedule 10.03.2015