⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 utf82gbk.cpp

📁 utf8到gbk的转码的c++代码
💻 CPP
字号:
#include <iostream>
#include <iconv.h>
using namespace std;

string IConvert(const string &sInput)
{

    string sOutput;
    char *pin = (char*)sInput.data();
    size_t inlen = sInput.length() * 4;
    size_t outlen = inlen;
    char *pout = new char[outlen];
    memset(pout, 0, outlen);

    iconv_t cd = 0;
    if((cd = iconv_open("gbk", "utf-8")) == (iconv_t)-1)
    {
		cout << "iconv open fail \n";
        return sOutput;
    }

    // 不知道iconv内部是如何实现的,必须这样再进行一次赋值才不会出错
    char *pin1 = pin, *pout1 = pout;
    char **ppin = & pin1;
    char **ppout = & pout1;
    size_t inleft = inlen, outleft = outlen;
    if(iconv(cd, (const char**)ppin, &inleft, ppout, &outleft) == size_t(-1))
    {
        iconv_close(cd);
		cout << "convert fail\n" << errno << endl;
        return sOutput;
    }
    iconv_close(cd);

    sOutput.assign(pout, outlen - outleft);

    delete []pout;

    return sOutput;
};

int main(int argc, char* argv[])
{
		cout << argv[1] << endl;
		string utf8str(argv[1]);
		cout << utf8str << endl;
		cout << IConvert(utf8str) << endl;;
		return 0;
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -