如何在C++中查找日语字符串中的空格

How to find space in a japanese string in C++?

本文关键字:字符串 空格 日语 查找 C++      更新时间:2023-10-16

我正在为日语句子编写一个自动更正程序,句子中缺失的字符将表示为空格。

我正在阅读2个文件。。。

输入文件:

 はアビガイル
おはよう くん

字典文件:

私はアビガイル
おはよう花くん

缺少的字符私和花表示为空间

如何从输入文件中查找空间?

我试过lineFromFile.find(" "),但它返回垃圾,因为它不是常见的英文字符。还试用了lineFromFile.find('x20')lineFromFile.find(' ')

我也尝试了string lineFromFile = u8"あび",但u8前缀出现错误"标识符'u8'未定义">

我正在使用C++、Visual Studio 2013、gcc 4.8.3,我当前的代码页是Unicode(带签名的UTF-8)

如果您认为这是一个重复的问题,请评论同一个已回答问题的链接

我的计划是:

  1. 从输入文件的行中查找空格(返回spaceIndex)
  2. 将字典文件中的行保存在string temp
  3. 将变量tempspaceIndex中的字符替换为
  4. 将输入文件中的行与temp进行比较
  5. 重复,直到找到匹配项或字典文件的eof为止

请帮忙,我有3天时间:'(

缺少的字符私和花表示为空间

不,它们不是。在十六进制编辑器中查看 はアビガイル可以发现第一个字符是'u3000',它是IDEOGRAPHIC SPACE而不是SPACE。

所以要找到它,你需要使用find(u8"u3000")find("xe3x80x80)

如果你很幸运,输入文件中的所有日语字符都以UTF-8编码为三个字节,那么你可以将它们视为在字符串中有固定的位置,并将三个字节的块从一个字符串替换为另一个字符串。