Я работаю над программой автокоррекции для японских предложений, и отсутствующий символ в предложении будет представлен в виде пробела.
Я читаю из 2 файлов …
Входной файл:
はアビガイル
おはよう くん
Файл словаря:
私はアビガイル
おはよう花くん
Недостающие символы 私 и 花 представлены пробелом
Как мне найти место из входного файла?
Я старался lineFromFile.find(" ")
но он возвращает мусор, так как это не обычные английские символы. Также попробовал lineFromFile.find('\0x20')
а также lineFromFile.find(' ')
Я тоже пробовал string lineFromFile = u8"あび"
но префикс u8 получает ошибку «идентификатор ‘u8’ не определен»
я использую C ++, Visual Studio 2013, gcc 4.8.3 и моя текущая кодовая страница — Unicode (UTF-8 с подписью)
Если вы считаете, что это дублирующий вопрос, пожалуйста, прокомментируйте ссылку на тот же ОТВЕТНЫЙ вопрос
Мой план:
spaceIndex
)string temp
spaceIndex
в переменной temp
будетtemp
Пожалуйста, помогите, у меня есть 3 дня: ‘(
Недостающие символы 私 и 花 представлены пробелом
Нет, это не так. Смотря на はアビガイル
в шестнадцатеричном редакторе показывает, что первый символ '\u3000'
который ИДЕОГРАФИЧЕСКОЕ ПРОСТРАНСТВО не ПРОСТРАНСТВО.
Так что, чтобы найти его, вам нужно использовать find(u8"\u3000")
или же find("\xe3\x80\x80)
Если вам повезло, и все японские символы во ваших входных файлах кодируются как три байта в UTF-8, тогда вы можете рассматривать их как наличие фиксированных позиций в строках и заменять блоки из трех байтов из одной строки в другую.