本文整理汇总了C++中zlunicodeutil::Ucs2String::at方法的典型用法代码示例。如果您正苦于以下问题:C++ Ucs2String::at方法的具体用法?C++ Ucs2String::at怎么用?C++ Ucs2String::at使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类zlunicodeutil::Ucs2String
的用法示例。
在下文中一共展示了Ucs2String::at方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: parseLink
std::string DocBookReader::parseLink(ZLUnicodeUtil::Ucs2String s, bool urlencode) {
//TODO add support for HYPERLINK like that:
// [0x13] HYPERLINK "http://site.ru/some text" \t "_blank" [0x14] text [0x15]
//Current implementation search for last QUOTE, so, it reads \t and _blank as part of link
//Last quote searching is need to handle link like that:
// [0x13] HYPERLINK "http://yandex.ru/yandsearch?text='some text' и "some text2"" [0x14] link text [0x15]
static const ZLUnicodeUtil::Ucs2Char QUOTE = 0x22;
size_t i, first = 0;
//TODO maybe functions findFirstOf and findLastOf should be in ZLUnicodeUtil class
for (i = 0; i < s.size(); ++i) {
if (s.at(i) == QUOTE) {
first = i;
break;
}
}
if (i == s.size()) {
return std::string();
}
size_t j, last = 0;
for (j = s.size(); j > 0 ; --j) {
if (s.at(j - 1) == QUOTE) {
last = j - 1;
break;
}
}
if (j == 0 || last == first) {
return std::string();
}
ZLUnicodeUtil::Ucs2String link;
for (size_t k = first + 1; k < last; ++k) {
ZLUnicodeUtil::Ucs2Char ch = s.at(k);
if (urlencode && ZLUnicodeUtil::isSpace(ch)) {
//TODO maybe implement function for encoding all signs in url, not only spaces and quotes
//TODO maybe add backslash support
link.push_back('%');
link.push_back('2');
link.push_back('0');
} else if (urlencode && ch == QUOTE) {
link.push_back('%');
link.push_back('2');
link.push_back('2');
} else {
link.push_back(ch);
}
}
std::string utf8String;
ZLUnicodeUtil::ucs2ToUtf8(utf8String, link);
return utf8String;
}