zoukankan      html  css  js  c++  java
  • iconv 使用方法封装

    std::string iconv_exec(const std::string& in, const char* fromcode, const char* tocode)
    {
        char buffer[128];
        std::string out;
        auto cd = iconv_open(tocode, fromcode);
        if (cd != nullptr)
        {
            size_t outbytesleft = sizeof(buffer);
            size_t inbytesleft = in.size();
            const char* inbuf = in.c_str();
            char* outbuf = buffer;
            int ret = 0;
            for (;;) {
                ret = iconv(cd, &inbuf, &inbytesleft, &outbuf, &outbytesleft);
                if (0 == ret)
                {
                    out.insert(out.end(), buffer, buffer + sizeof(buffer)-outbytesleft);
                    break;
                }
                else {
                    assert(inbytesleft > 0);
                    assert(outbytesleft == 0);
                    out.insert(out.end(), buffer, buffer + sizeof(buffer));
                    outbytesleft = sizeof(buffer);
                    outbuf = buffer;
                }
            }
            void)iconv_close(cd);
        }
    
        return out;
    }
    
    /// example
    int main(int, char**)
    {
        std::string utf8str = iconv_exec("你好吗", "gb2312", "utf-8");
        return 0;
    }
    
    
    


  • 相关阅读:
    HTML与css语法笔记
    HTML标记含义
    HTML-入门篇day01
    计算器
    九宫格
    5.28第十三周
    5.21 不用交得作业及答案
    5.22 上交作业
    5.15作业
    5.7作业
  • 原文地址:https://www.cnblogs.com/jhcelue/p/7375287.html
Copyright © 2011-2022 走看看