Я пишу приложение на C ++, которое использует boost :: asio для некоторых операций http.Я выбрал boost :: asio, предполагая, что он полностью совместим с юникодом.Однако я не могу скомпилировать в UNICODE, потому что некоторая часть asio жестко закодирована в char.
Показательный пример:
#ifndef TCHAR
#ifdef _UNICODE
#define TCHAR wchar_t
#else
#define TCHAR char
#endif
#endif
// The following lines only complile in MBCS and not in UNICODE.
boost::asio::basic_streambuf<std::allocator<TCHAR> > request;
std::basic_ostream<TCHAR, std::char_traits<TCHAR> > requestStream(&request);
boost :: asio :: read_until функция принимает символ в качестве разделителя.Я что-то здесь не так делаю?Обратите внимание, что я новичок в Юникоде, никогда раньше не нуждался в этом.
boost :: asio :: basic_streambuf происходит от std :: streambuf вместо std :: basic_streambuf, поэтому я подозреваю, что boost :: asio на самом деле не UNICODEсоответствует.