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

时间:2015-04-10 13:05:55

标签: c++ string dictionary utf autocorrect

我正在为日语句子制作一个自动纠正程序,句子中缺少的字符将表示为空格。

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

输入文件:

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

字典文件:

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

缺少的字符“私”和“花”表示为空格

如何从输入文件中找到空格?

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

我也试过string lineFromFile = u8"あび"但是u8前缀出错“标识符'u8'未定义”

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

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

我的计划是:

  1. 从输入文件的行中找到空格(返回spaceIndex
  2. 保存string temp
  3. 中字典文件中的行
  4. 替换变量spaceIndextemp中的字符
  5. 将输入文件中的行与temp
  6. 进行比较
  7. 重复直到找到匹配或直到字典文件的eof
  8. 请帮忙,我有3天时间:'(

1 个答案:

答案 0 :(得分:1)

  

缺少的字符“私”和“花”表示为空格

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

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

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