예제 #1
0
LString LString::fromAscii(const std::string &s) {
    LString ret;
    ret.resize(s.size());
    LString::Iterator out = ret.begin();
    for (std::string::const_iterator i = s.begin(); i != s.end(); ++i) {
        *out = *i;
    }
    return ret;
}
예제 #2
0
LString LString::toLower() const {
    LString ret;
    ret.resize(size());
    LString::Iterator out = ret.begin();
    for (LString::ConstIterator i = begin(); i != end(); i++) {
        char32_t ch = *i;
        ch = toLower(ch);
        *out = ch;
        ++out;
    }
    return ret;
}
예제 #3
0
LString LString::fromUtf8(const std::string &s) {
    if (s.size() == 0) return LString();
    const uint8_t *begin = reinterpret_cast<const uint8_t*>(s.c_str());
    const uint8_t *end = begin + s.size();
    LString ret;
    ret.reserve(s.size());

    LChar *destBegin = ret.begin();
    LChar *destEnd = ret.end();
    bool conversionSucceeded = utf8ToUtf32(&begin, end, &destBegin, destEnd);
    assert(conversionSucceeded && "Failed conversion utf8 -> utf32");

    ret.resize(destBegin - ret.begin());
    return ret;
}