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;
}

??
时间: 2024-10-14 17:00:10

iconv 使用方法封装的相关文章

php 将汉字转换成拼音的方法封装成工具包

php 将汉字转换成拼音的方法封装成工具包,代码如下: <?php class PinyinTool { private static $pylist = array( 'a'=>-20319,'ai'=>-20317,'an'=>-20304,'ang'=>-20295,'ao'=>-20292, 'ba'=>-20283,'bai'=>-20265,'ban'=>-20257,'bang'=>-20242,'bao'=>-20230,'

通用ajax请求方法封装,兼容主流浏览器

ajax简介 没有AJAX会怎么样?普通的ASP.Net每次执行服务端方法的时候都要刷新当前页面.如果没有AJAX,在youku看视频的过程中如果点击了"顶.踩".评论.评论翻页,页面就会刷新,视频就会被打断.开发一个看效果:用<video src="diaosi.mp4" autoplay controls></video>播放视频(只有支持html5的浏览器能播放),然后放一个"赞"按钮的功能(赞的数量存到数据库),看

animate动画方法封装:原生JS实现

1 /** 2 * Created by guoyongfeng on 2014/7/7. 3 * @Author guoyongfeng 4 * @Date 2014-07-07 5 * @Version 1.0.0 6 * @update 2014-07-07 7 * @described tween动画库函数封装 8 * 9 */ 10 define('animate/0.0.1', function(){ 11 /** 12 * 13 */ 14 return function(ele,

javascript中最最最常用的方法封装

javascript 常用方法的封装,小编持续升级中... 方法封装(js原生): 一.Object 类型 MHQ.ajaxUtils 定义一个ajax工具类 ajax 定义一个ajax工具函数 get 方法 post 方法 MHQ.elementUtils DOM元素工具类 replaceClassName 替换字符串,设置className属性 getInnerText 获取DOM元素内部文本的兼容方法 setInnerText 设置DOM元素内部文本的兼容方法 getNextElement

jdbc连接Mysql方法封装

package com.shopping.util; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class DB { static { try { Class.forNam

js代码分离方法封装

var oldtd1; var oldtd2; var oldtd3; var indexnum = 0; //document.getebyid简写方法 function domByid(domid) { return document.getElementById(domid); } function domsByclass(domclass) { return document.getElementsByClassName(domclass); } //添加菜单方法 function Ad

appium+python自动化24-滑动方法封装(swipe)【转载】

swipe介绍 1.查看源码语法,起点和终点四个坐标参数,duration是滑动屏幕持续的时间,时间越短速度越快.默认为None可不填,一般设置500-1000毫秒比较合适. swipe(self, start_x, start_y, end_x, end_y, duration=None) Swipe from one point to another point, for an optional duration. 从一个点滑动到另外一个点,duration是持续时间 :Args: - st

axios方法封装

axios方法封装 一般情况下,我们会用到的方法有:GET,POST,PUT,PATCH,封装方法如下: 五.封装后的方法的使用 1.在main.js文件里引用之前写好的文件,我的命名为http.js 2.在需要的地方之间调用,如图所示: 说明: GET调用方法如下,其中url是接口地址 this.$get(url).then((res) { //代码 }); POST调用方法如下,其中url是接口地址,data是请求的数据. this.$post(url,data).then({ //代码 }

微信小程序request(promise)方法封装

var Promise = require('es6-promise'); var app = getApp(); function wxPromisify(fn) { return function (obj = {}) { return new Promise((resolve, reject) => { obj.success = function (res) { //成功 resolve(res) } obj.fail = function (res) { //失败 reject(res