2014-10-03 2 views
2

Мне нужна помощь в получении слов из TXT-файла, который также содержит диакритические знаки. (Итак, есть слова, содержащие ěščř и т. Д. Кстати, это чешская диакритика, если это помогает.) Моя функция получает слова, которые я печатаю, но не получит слова, которые я вводил в консоль, содержащую диакритические знаки. Я думаю, что мне нужно что-то установить в своем Microsoft Visual C++ 2010, но я не уверен, что и где. В случае, если я ошибаюсь, есть функция.Как реализовать диакритические знаки в C++?

bool find(char typedword[50]) 
{ 
    bool found = false; 
    char * word = new char [50]; 
    fstream dictionary; 
    dictionary.open("Dictionary.txt", ios::in); 
    while (dictionary >> word) 
    { 
    if (strcmp(typedword, word) == 0) 
    { 
     found = true; 
     break; 
    } 

    } 
    dictionary.close(); 
    if (found == true) 
     return true; 
    else 
     return false; 
} 

Благодарим за помощь!

+1

Возможно, вам придется использовать широкие символы. – matsjoyce

+0

Если консоль принимает только набор символов 'ascii', вы не сможете вводить символы из другого набора символов. hodně štěstí – Jay

+1

Ну, это просто консоль Windows 7, а мои настройки Windows - чешские, поэтому она должна быть в состоянии прочитать этот набор символов, не так ли? – ThePopa611

ответ

2

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

Портативный способ setlocale и использовать strcoll вместо strcmp.

Путь к Windows должен использовать CompareStringEx (который автоматически использует настройки языкового стандарта ОС) вместо strcmp. NormalizeString также может быть полезен.

+0

Не обращайте внимания на мой (удаленный) ответ, этот действительно имеет смысл. +1 –

+0

Теперь я не уверен, использую ли я 'setlocal' неправильный путь или это просто не работает для меня. Я добавил 'setlocale (LC_ALL," ");' к моей функции и заменил 'strcmp' на' strcoll', и, тем не менее, он не находит слова с диакритикой в ​​моем .txt-файле. – ThePopa611

+0

@ ThePopa611: Хм, похоже, это автоматически установит локаль. Вы используете Windows с чешским языком? –

Смежные вопросы