удаление акцентов от персонажей

Я написал этот код, чтобы удалить акценты из символов в строке и сделать прописными:

#include <iostream>
#include <string>
using namespace std;
std::wstring input;
int main()
{
input.reserve(255);
cout << "Enter string to be converted:" <<endl;
getline(std::wcin,input);
for (unsigned int iii=0;iii<input.length();iii++)
{
if(input[iii]== L'ő') input[iii]=L'o';
if(input[iii]== L'ö') input[iii]=L'o';
if(input[iii]== L'ó') input[iii]=L'o';
if(input[iii]== L'ü') input[iii]=L'u';
if(input[iii]== L'ú') input[iii]=L'u';
if(input[iii]== L'ű') input[iii]=L'u';
if(input[iii]== L'é') input[iii]=L'e';
if(input[iii]== L'á') input[iii]=L'a';
if(input[iii]== L'í') input[iii]=L'i';
input[iii]=towupper(input[iii]);
}
std::wcout<<input;
return 0;
}

Это делает нормальные символы в верхнем регистре, но игнорирует акцентированные и печатает их в нижнем регистре с акцентами. Заранее спасибо!

2

Решение

Скорее всего, потому что input строка широких символов, но литералы символов, такие как 'ö' не широкие символы, что означает, что сравнение не удастся. Используйте, например, L'ö',

Эти сравнения должны были генерировать предупреждения, и если нет, то вы должны включить больше предупреждений компилятором, чтобы вы получили предупреждение за это.

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector