c++ how to write/read ofstream in unicode / utf8

前端 未结 1 1871
你的背包
你的背包 2020-12-09 19:31

I have UTF-8 text file , that I\'m reading using simple :

ifstream in(\"test.txt\");

Now I\'d like to create a new file that will be UTF-

相关标签:
1条回答
  • 2020-12-09 19:47

    Ok, about the portable variant. It is easy, if you use the C++11 standard (because there are a lot of additional includes like "utf8", which solves this problem forever).

    But if you want to use multi-platform code with older standards, you can use this method to write with streams:

    1. Read the article about UTF converter for streams
    2. Add stxutif.h to your project from sources above
    3. Open the file in ANSI mode and add the BOM to the start of a file, like this:

      std::ofstream fs;
      fs.open(filepath, std::ios::out|std::ios::binary);
      
      unsigned char smarker[3];
      smarker[0] = 0xEF;
      smarker[1] = 0xBB;
      smarker[2] = 0xBF;
      
      fs << smarker;
      fs.close();
      
    4. Then open the file as UTF and write your content there:

      std::wofstream fs;
      fs.open(filepath, std::ios::out|std::ios::app);
      
      std::locale utf8_locale(std::locale(), new utf8cvt<false>);
      fs.imbue(utf8_locale); 
      
      fs << .. // Write anything you want...
      
    0 讨论(0)
提交回复
热议问题