示例#1
0
文件: Facets.cpp 项目: 3Nigma/frayon
const Pt::Char*
ctype<Pt::Char>::do_narrow(const Pt::Char* begin, const Pt::Char* end, char dfault, char* dest) const
{
    for(const Pt::Char* cur = begin; cur < end; ++cur) {
        *dest = do_narrow(*cur, dfault);
        ++dest;
    }

    return end;
}
示例#2
0
YBUTIL_DECL const std::string str2std(const String &s, const std::string &enc_name)
{
#if defined(YB_USE_WX)
    if (enc_name.empty())
        return std::string(s.mb_str(wxConvUTF8));
    wxCSConv conv(wxString(enc_name.c_str(), wxConvUTF8).GetData());
    return std::string(s.mb_str(conv));
#elif defined(YB_USE_QT)
    if (enc_name.empty())
        return std::string(s.toLocal8Bit().constData());
    QTextCodec *codec = QTextCodec::codecForName(enc_name.c_str());
    return std::string(codec->fromUnicode(s).constData());
#elif defined(YB_USE_UNICODE)
    std::locale loc(get_locale(enc_name).c_str());
    return do_narrow(s, loc);
#else
    return s;
#endif
}
示例#3
0
YBUTIL_DECL const std::string str_narrow(
        const std::wstring &wide, const std::string &enc_name)
{
    std::locale loc(get_locale(enc_name).c_str());
    return do_narrow(wide, loc);
}