读取具有日文文本的csv文件。(C ++)

时间:2018-02-27 02:42:20

标签: c++ csv encoding

csv文件中包含日文文本。 在通过记事本打开时,它表示其编码为utf-8。

我在stackoverflow上读到,对于utf-8,首先在单个流中读取文件,然后将其转换为wstring。

我使用下面的代码将字符串转换为wstring。

    wstring stow(const std::string& str){
      int size_needed = MultiByteToWideChar(CP_UTF8, 0, &str[0], (int)str.size(), NULL, 0);
      std::wstring wstrTo( size_needed, 0 );
      MultiByteToWideChar(CP_UTF8, 0, &str[0], (int)str.size(), &wstrTo[0], size_needed);
      return wstrTo;}

但是,在日文文本的情况下,我在返回的wstring中得到了垃圾。

注意:

  1. 我只能用流来读取csv。
  2. 不允许分配静态内存。
  3. 我如何成功阅读日文文本?

2 个答案:

答案 0 :(得分:0)

缺少检查是否在字符串中添加了UTF-8 BOM,如果是,请跳过它。

答案 1 :(得分:0)

这是通过使用CP_ACP编码实现的。