我的程序得到一个 utf32 编码的输入中文字符串:
./myprogram 我想玩
我想将其转换为 utf8,为此我使用库 UTF8-CPP http://utfcpp.sourceforge.net
#include "source/utf8.h"
using namespace std;
int main(int argc, char** argv)
{
printf("argv[1] = %s \n", argv[1]);
string str = argv[1];
printf("str = %s \n", str);
vector<unsigned char> utf8result;
utf8::utf32to8(str.begin(), str.end(), back_inserter(utf8result));
我在终端中得到了下一个输出:
argv[1] = 系
str = D�k�
terminate called after throwing an instance of 'utf8::invalid_code_point'
what(): Invalid code point
如何修复此代码,以便会话 utf32to8 成功?我做错了什么,请解释一下?之后,我想将收到的 utf8 写入文件。