本文整理汇总了C++中UT_UTF8String::reserve方法的典型用法代码示例。如果您正苦于以下问题:C++ UT_UTF8String::reserve方法的具体用法?C++ UT_UTF8String::reserve怎么用?C++ UT_UTF8String::reserve使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类UT_UTF8String
的用法示例。
在下文中一共展示了UT_UTF8String::reserve方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: _outputData
void s_XSL_FO_Listener::_outputData(const UT_UCSChar * data, UT_uint32 length)
{
UT_UTF8String sBuf;
const UT_UCSChar * pData;
UT_ASSERT(sizeof(UT_Byte) == sizeof(char));
sBuf.reserve(length);
for (pData=data; (pData<data+length); /**/)
{
switch (*pData)
{
case '<':
{
sBuf += "<";
pData++;
break;
}
case '>':
{
sBuf += ">";
pData++;
break;
}
case '&':
{
sBuf += "&";
pData++;
break;
}
case UCS_LF: // LF -- representing a Forced-Line-Break
{
UT_ASSERT(UT_TODO);
pData++;
break;
}
case UCS_VTAB: // VTAB -- representing a Forced-Column-Break
{
UT_ASSERT(UT_TODO);
pData++;
break;
}
case UCS_FF: // FF -- representing a Forced-Page-Break
{
UT_ASSERT(UT_TODO);
pData++;
break;
}
default:
{
if(*pData < 0x20) //invalid xml chars
{
pData++;
}
else
{
sBuf.appendUCS4(pData, 1);
pData++;
}
break;
}
}
}
m_pie->write(sBuf.utf8_str(), sBuf.byteLength());
}
示例2: _outputData
void ODe_AbiDocListener::_outputData(const UT_UCSChar* pData, UT_uint32 length) {
UT_UTF8String sBuf;
const UT_UCSChar* p;
UT_uint32 nSpaces = 0;
UT_ASSERT(sizeof(UT_Byte) == sizeof(char));
sBuf.reserve(length);
for (p=pData; (p<pData+length); /**/)
{
switch (*p)
{
case '<':
if(nSpaces > 1)
_appendSpaces(&sBuf, nSpaces);
nSpaces = 0;
sBuf += "<";
p++;
break;
case '>':
if(nSpaces > 1)
_appendSpaces(&sBuf, nSpaces);
nSpaces = 0;
sBuf += ">";
p++;
break;
case '&':
if(nSpaces > 1)
_appendSpaces(&sBuf, nSpaces);
nSpaces = 0;
sBuf += "&";
p++;
break;
case ' ':
nSpaces++;
if(nSpaces == 1)
sBuf.appendUCS4 (p, 1);
p++;
break;
case UCS_LF: // LF -- representing a Forced-Line-Break
if(nSpaces > 1)
_appendSpaces(&sBuf, nSpaces);
nSpaces = 0;
m_pCurrentImpl->insertText(sBuf);
m_pCurrentImpl->insertLineBreak();
sBuf.clear();
p++;
break;
case UCS_VTAB: // VTAB -- representing a Forced-Column-Break
if(nSpaces > 1)
_appendSpaces(&sBuf, nSpaces);
nSpaces = 0;
m_pCurrentImpl->insertText(sBuf);
m_pCurrentImpl->insertColumnBreak();
sBuf.clear();
p++;
break;
case UCS_TAB:
if(nSpaces > 1)
_appendSpaces(&sBuf, nSpaces);
nSpaces = 0;
m_pCurrentImpl->insertText(sBuf);
m_pCurrentImpl->insertTabChar();
sBuf.clear();
p++;
break;
case UCS_FF: // FF -- representing a Forced-Page-Break
if(nSpaces > 1)
_appendSpaces(&sBuf, nSpaces);
nSpaces = 0;
m_pCurrentImpl->insertText(sBuf);
m_pCurrentImpl->insertPageBreak();
sBuf.clear();
p++;
break;
default:
if (*p < 0x20) // Silently eat these characters.
{
if(nSpaces > 1)
_appendSpaces(&sBuf, nSpaces);
nSpaces = 0;
p++;
}
//.........这里部分代码省略.........