如何在 C++ 中的日文字符串中查找 space?

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

我正在为日语句子开发自动更正程序,句子中缺失的字符将表示为 space。

我正在读取 2 个文件...

输入文件:

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

词典文件:

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

缺失字符私和花表示为space

如何从输入文件中找到 space?

我试过 lineFromFile.find(" ") 但它 return 是垃圾,因为它不是通常的英文字符。还尝试了 lineFromFile.find('[=14=]x20')lineFromFile.find(' ')

我也试过string lineFromFile = u8"あび"但是u8前缀出错"identifier 'u8' is undefined"

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

如果您认为这是一个重复的问题,请将 link 评论到相同的已回答问题

我的计划是:

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

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

The missing characters 私 and 花 are represented as a space

不,他们不是。在十六进制编辑器中查看  はアビガイル 显示第一个字符是 '\u3000'IDEOGRAPHIC SPACE not SPACE.

所以要找到它,您需要使用 find(u8"\u3000")find("\xe3\x80\x80)

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