[M1 Mac, Monterey 12.6.3, clang 13.0.0, FLTK 1.3.8, ChatGPT API(gpt-3.5-turbo), NO IDE]
前回の記事で漢字変換がおかしかった所を修正しました。
UTF-8のままではマルチバイト文字を1つのユニコードとして認識できないため、UTF-16に変換する必要があります。
wstring_convertクラスを使ってUTF-8からUTF-16に変換しています。
#include <iostream>
#include <string>
#include <codecvt>
void convertCB(Fl_Widget*, void*) {
std::stringstream unicode;
const char* chr = convertInput -> value();
std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>> converter;
std::wstring unicode_str = converter.from_bytes(chr);
for (wchar_t c : unicode_str) {
unicode << std::hex << std::uppercase << static_cast<int>(c) << " ";
}
browser->add((unicode.str()).c_str());
}