• CP_ACP : CP_OEMCP


        // filesystem windows_file_codecvt.cpp -----------------------------------------//
          
         // Copyright Beman Dawes 2009
          
         // Distributed under the Boost Software License, Version 1.0.
         // See http://www.boost.org/LICENSE_1_0.txt
          
         // Library home page: http://www.boost.org/libs/filesystem
          
         //--------------------------------------------------------------------------------------//
          
         // define BOOST_FILESYSTEM_SOURCE so that <boost/system/config.hpp> knows
         // the library is being built (possibly exporting rather than importing code)
         #define BOOST_FILESYSTEM_SOURCE
          
         #ifndef BOOST_SYSTEM_NO_DEPRECATED
         # define BOOST_SYSTEM_NO_DEPRECATED
         #endif
          
         #include <boost/filesystem/config.hpp>
         #include <cwchar> // for mbstate_t
          
         #ifdef BOOST_WINDOWS_API
          
         #include "windows_file_codecvt.hpp"
          
         // Versions of MinGW prior to GCC 4.6 requires this
         #ifndef WINVER
         # define WINVER 0x0500
         #endif
          
         #include <windows.h>
          
         std::codecvt_base::result windows_file_codecvt::do_in(
         std::mbstate_t &,
         const char* from, const char* from_end, const char*& from_next,
         wchar_t* to, wchar_t* to_end, wchar_t*& to_next) const
         {
         UINT codepage = AreFileApisANSI() ? CP_ACP : CP_OEMCP;
          
         int count;
         if ((count = ::MultiByteToWideChar(codepage, MB_PRECOMPOSED, from,
         from_end - from, to, to_end - to)) == 0)
         {
         return error; // conversion failed
         }
          
         from_next = from_end;
         to_next = to + count;
         *to_next = L'';
         return ok;
         }
          
         std::codecvt_base::result windows_file_codecvt::do_out(
         std::mbstate_t &,
         const wchar_t* from, const wchar_t* from_end, const wchar_t* & from_next,
         char* to, char* to_end, char* & to_next) const
         {
         UINT codepage = AreFileApisANSI() ? CP_ACP : CP_OEMCP;
          
         int count;
         if ((count = ::WideCharToMultiByte(codepage, WC_NO_BEST_FIT_CHARS, from,
         from_end - from, to, to_end - to, 0, 0)) == 0)
         {
         return error; // conversion failed
         }
          
         from_next = from_end;
         to_next = to + count;
         *to_next = '';
         return ok;
         }
          
         # endif // BOOST_WINDOWS_API
     

    https://github.com/chigraph/chigraph/blob/master/third_party/boost/filesystem/windows_file_codecvt.cpp

  • 相关阅读:
    调试WEB APP多设备浏览器
    Android病毒家族及行为(一)
    如何判断Android设备是否为模拟器
    python操作MongoDB
    python面试题大全(二)
    白话经典算法系列之——快速排序
    白话经典算法系列之——希尔排序的实现
    白话经典算法系列之——直接插入排序的三种实现
    白话经典算法系列之——冒泡排序的三种实现(转)
    MySQL 数据库赋予用户权限操作表
  • 原文地址:https://www.cnblogs.com/findumars/p/7989277.html
Copyright © 2020-2023  润新知