Я работаю над автоматической программой для японских предложений, а отсутствующий символ в предложении будет представлен как пробел.Как найти место в японской строке на C++?
Я читаю от 2-х файлов ...
входного файла:
はアビガイル
おはよう くん
Файл словаря:
私はアビガイル
おはよう花くん
Недостающие символы 私 и 花 представлены как пространство
Как я могу найти пространство из входного файла?
Я пробовал lineFromFile.find(" ")
, но он возвращает корзину, так как это не обычные английские символы. Также попробовал lineFromFile.find('\0x20')
и lineFromFile.find(' ')
Я также попытался string lineFromFile = u8"あび"
но префикс u8 получает ошибка "идентификатор 'u8' не определен"
Я использую C++, Visual Studio 2013, GCC 4.8.3 и мой текущий код страница Unicode (UTF-8 с подписью)
Если вы думаете, что это дубликат вопрос, пожалуйста прокомментируйте ссылку на тот же вопрос ANSWERED
Мой план:
- Найти пространство от линии входного файла (возвращать одно и то
spaceIndex
) - Сохранить строку из файла словаря в
string temp
- Заменить символ в
spaceIndex
в переменнойtemp
будет - Сравните строку из входного файла с
temp
- Повторить до тех пор, пока совпадение не будет найдено или пока не будет найден файл словаря
Пожалуйста, помогите, у меня есть 3 дня: '(
Что вы подразумеваете под "return trash"?Пространство в UTF-8 является одиночным 1-байтовым символом, вы должны найти его в порядке. Что возвращает 'lineFromFile.find ('')'? Также я не знаю о Visual Studio, но 'u8" あ び "' должен отлично работать с GCC 4.8 –
Ваш план не будет работать, потому что хотя пробел занимает один символ в строке, символ в том же позиция в файле словаря будет многобайтовым символом, поэтому замена одного байта из строки словаря на входную строку не будет работать. Вы должны преобразовать строки в 'u32string' перед их обработкой, так что каждый символ принимает один символ' char32_t', и вы можете заменить отдельные символы на одно и то же смещение в строках. В Visual Studio вы можете использовать 'wstring_convert' и' codecvt 'для преобразования, но GCC 4.8 не поддерживает эти типы. –
@JonathanWakely, когда я напечатал возвращение найти его напечатано '4294967295'. 'lineFromFile.find ('')' возвращает то же самое. Я googled, что u8 должен был сработать, но он просто не делает, должен ли я # включать нечто, отличное от '', '', '', ''? –