本文整理汇总了C++中ConvertUTF32ToUTF8函数的典型用法代码示例。如果您正苦于以下问题:C++ ConvertUTF32ToUTF8函数的具体用法?C++ ConvertUTF32ToUTF8怎么用?C++ ConvertUTF32ToUTF8使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了ConvertUTF32ToUTF8函数的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: strchr
const char* TiXmlBase::GetEntity( const char* p, char* value, int* length, TiXmlEncoding encoding )
{
// Presume an entity, and pull it out.
TIXML_STRING ent;
int i;
*length = 0;
if ( *(p+1) && *(p+1) == '#' && *(p+2) )
{
unsigned long ucs = 0;
ptrdiff_t delta;
unsigned mult = 1;
if ( *(p+2) == 'x' )
{
// Hexadecimal.
if ( !*(p+3) ) return nullptr;
const char* q = p+3;
q = strchr( q, ';' );
if ( !q || !*q ) return nullptr;
delta = q-p;
--q;
while ( *q != 'x' )
{
if ( *q >= '0' && *q <= '9' )
ucs += mult * (*q - '0');
else if ( *q >= 'a' && *q <= 'f' )
ucs += mult * (*q - 'a' + 10);
else if ( *q >= 'A' && *q <= 'F' )
ucs += mult * (*q - 'A' + 10 );
else
return nullptr;
mult *= 16;
--q;
}
}
else
{
// Decimal.
if ( !*(p+2) ) return nullptr;
const char* q = p+2;
q = strchr( q, ';' );
if ( !q || !*q ) return nullptr;
delta = q-p;
--q;
while ( *q != '#' )
{
if ( *q >= '0' && *q <= '9' )
ucs += mult * (*q - '0');
else
return nullptr;
mult *= 10;
--q;
}
}
if ( encoding == TIXML_ENCODING_UTF8 )
{
// convert the UCS to UTF-8
ConvertUTF32ToUTF8( ucs, value, length );
}
else
{
*value = static_cast<char>(ucs);
*length = 1;
}
return p + delta + 1;
}
// Now try to match it.
for( i=0; i<NUM_ENTITY; ++i )
{
if ( strncmp( entity[i].str, p, entity[i].strLength ) == 0 )
{
assert( strlen( entity[i].str ) == entity[i].strLength );
*value = entity[i].chr;
*length = 1;
return ( p + entity[i].strLength );
}
}
// So it wasn't an entity, its unrecognized, or something like that.
*value = *p; // Don't put back the last one, since we return it!
//*length = 1; // Leave unrecognized entities - this doesn't really work.
// Just writes strange XML.
return p+1;
}
示例2: strchr
const char* XMLUtil::GetCharacterRef( const char* p, char* value, int* length )
{
// Presume an entity, and pull it out.
*length = 0;
if ( *(p+1) == '#' && *(p+2) ) {
unsigned long ucs = 0;
ptrdiff_t delta = 0;
unsigned mult = 1;
if ( *(p+2) == 'x' ) {
// Hexadecimal.
if ( !*(p+3) ) {
return 0;
}
const char* q = p+3;
q = strchr( q, ';' );
if ( !q || !*q ) {
return 0;
}
delta = q-p;
--q;
while ( *q != 'x' ) {
if ( *q >= '0' && *q <= '9' ) {
ucs += mult * (*q - '0');
}
else if ( *q >= 'a' && *q <= 'f' ) {
ucs += mult * (*q - 'a' + 10);
}
else if ( *q >= 'A' && *q <= 'F' ) {
ucs += mult * (*q - 'A' + 10 );
}
else {
return 0;
}
mult *= 16;
--q;
}
}
else {
// Decimal.
if ( !*(p+2) ) {
return 0;
}
const char* q = p+2;
q = strchr( q, ';' );
if ( !q || !*q ) {
return 0;
}
delta = q-p;
--q;
while ( *q != '#' ) {
if ( *q >= '0' && *q <= '9' ) {
ucs += mult * (*q - '0');
}
else {
return 0;
}
mult *= 10;
--q;
}
}
// convert the UCS to UTF-8
ConvertUTF32ToUTF8( ucs, value, length );
return p + delta + 1;
}
return p+1;
}
示例3: strchr
const char* TiXmlBase::GetEntity( const char* p, char* value, int* length )
{
// Presume an entity, and pull it out.
TIXML_STRING ent;
int i;
*length = 0;
if ( *(p+1) && *(p+1) == '#' && *(p+2) )
{
unsigned long ucs = 0;
unsigned delta = 0;
unsigned mult = 1;
if ( *(p+2) == 'x' )
{
// Hexadecimal.
if ( !*(p+3) ) return 0;
const char* q = p+3;
q = strchr( q, ';' );
if ( !q || !*q ) return 0;
delta = q-p;
--q;
while ( *q != 'x' )
{
if ( *q >= '0' && *q <= '9' )
ucs += mult * (*q - '0');
else if ( *q >= 'a' && *q <= 'f' )
ucs += mult * (*q - 'a' + 10);
else if ( *q >= 'A' && *q <= 'F' )
ucs += mult * (*q - 'A' + 10 );
else
return 0;
mult *= 16;
--q;
}
}
else
{
// Decimal.
if ( !*(p+2) ) return 0;
const char* q = p+2;
q = strchr( q, ';' );
if ( !q || !*q ) return 0;
delta = q-p;
--q;
while ( *q != '#' )
{
if ( *q >= '0' && *q <= '9' )
ucs += mult * (*q - '0');
else
return 0;
mult *= 10;
--q;
}
}
// convert the UCS to UTF-8
ConvertUTF32ToUTF8( ucs, value, length );
return p + delta + 1;
}
// Now try to match it.
for( i=0; i<NUM_ENTITY; ++i )
{
if ( strncmp( entity[i].str, p, entity[i].strLength ) == 0 )
{
assert( strlen( entity[i].str ) == entity[i].strLength );
*value = entity[i].chr;
*length = 1;
return ( p + entity[i].strLength );
}
}
// So it wasn't an entity, its unrecognized, or something like that.
*value = *p; // Don't put back the last one, since we return it!
return p+1;
}
示例4: uischr
const TIXML_CHAR* TiXmlBase::GetEntity( const TIXML_CHAR* p, TIXML_CHAR* value, int* length, TiXmlEncoding encoding )
{
// Presume an entity, and pull it out.
TIXML_STRING ent;
int i;
*length = 0;
if ( *(p+1) && *(p+1) == _TIXML_L('#') && *(p+2) )
{
unsigned long ucs = 0;
ptrdiff_t delta = 0;
unsigned mult = 1;
if ( *(p+2) == _TIXML_L('x') )
{
// Hexadecimal.
if ( !*(p+3) ) return 0;
const TIXML_CHAR* q = p+3;
q = uischr( q, _TIXML_L(';') );
if ( !q || !*q ) return 0;
delta = q-p;
--q;
while ( *q != _TIXML_L('x') )
{
if ( *q >= _TIXML_L('0') && *q <= _TIXML_L('9') )
ucs += mult * (*q - _TIXML_L('0'));
else if ( *q >= _TIXML_L('a') && *q <= _TIXML_L('f') )
ucs += mult * (*q - _TIXML_L('a') + 10);
else if ( *q >= _TIXML_L('A') && *q <= _TIXML_L('F') )
ucs += mult * (*q - _TIXML_L('A') + 10 );
else
return 0;
mult *= 16;
--q;
}
}
else
{
// Decimal.
if ( !*(p+2) ) return 0;
const TIXML_CHAR* q = p+2;
q = uischr( q, _TIXML_L(';') );
if ( !q || !*q ) return 0;
delta = q-p;
--q;
while ( *q != _TIXML_L('#') )
{
if ( *q >= _TIXML_L('0') && *q <= _TIXML_L('9') )
ucs += mult * (*q - _TIXML_L('0'));
else
return 0;
mult *= 10;
--q;
}
}
if ( encoding == TIXML_ENCODING_UTF8 )
{
// convert the UCS to UTF-8
ConvertUTF32ToUTF8( ucs, value, length );
}
else
{
*value = (TIXML_CHAR)ucs;
*length = 1;
}
return p + delta + 1;
}
// Now try to match it.
for( i=0; i<NUM_ENTITY; ++i )
{
if ( uisncmp( entity[i].str, p, entity[i].uislength ) == 0 )
{
assert( uislen( entity[i].str ) == entity[i].uislength );
*value = entity[i].chr;
*length = 1;
return ( p + entity[i].uislength );
}
}
// So it wasn't an entity, its unrecognized, or something like that.
*value = *p; // Don't put back the last one, since we return it!
//*length = 1; // Leave unrecognized entities - this doesn't really work.
// Just writes strange XML.
return p+1;
}