stringutils.cpp
来自「这是VCF框架的代码」· C++ 代码 · 共 2,672 行 · 第 1/5 页
CPP
2,672 行
// %S - Second as decimal number (00 59) case 'S' : { result.append( current, (p-current) -formatArgCount ); if ( hashCharFound ) { #ifdef VCF_OSX CFTextString cfStr; cfStr.format( CFSTR("%d"), date.getSecond() ); cfStr.copy( tmp, minVal<uint32>(cfStr.length(),tmpLen-1) ); tmp[minVal<uint32>(cfStr.length(),tmpLen-1) ] = 0; #elif defined(VCF_POSIX) || defined(VCF_CW_W32) || defined(VCF_DMC) swprintf( tmp, tmpLen-1, L"%d", date.getSecond() ); #else swprintf( tmp, L"%d", date.getSecond() ); #endif } else { #ifdef VCF_OSX CFTextString cfStr; cfStr.format( CFSTR("%02d"), date.getSecond() ); cfStr.copy( tmp, minVal<uint32>(cfStr.length(),tmpLen-1) ); tmp[minVal<uint32>(cfStr.length(),tmpLen-1) ] = 0; #elif defined(VCF_POSIX) || defined(VCF_CW_W32) || defined(VCF_DMC) swprintf( tmp, tmpLen-1, L"%02d", date.getSecond() ); #else swprintf( tmp, L"%02d", date.getSecond() ); #endif } result += tmp; current = p + 1; hashCharFound = false; formatArgCount = 1; } break; // %U - Week of year as decimal number, with Sunday as first day of week (00 53) case 'U' : { result.append( current, (p-current) -formatArgCount ); if ( hashCharFound ) { #ifdef VCF_OSX CFTextString cfStr; cfStr.format( CFSTR("%d"), date.getWeekOfYearStartingSun() ); cfStr.copy( tmp, minVal<uint32>(cfStr.length(),tmpLen-1) ); tmp[minVal<uint32>(cfStr.length(),tmpLen-1) ] = 0; #elif defined(VCF_POSIX) || defined(VCF_CW_W32) || defined(VCF_DMC) swprintf( tmp, tmpLen-1, L"%d", date.getWeekOfYearStartingSun() ); #else swprintf( tmp, L"%d", date.getWeekOfYearStartingSun() ); #endif } else { #ifdef VCF_OSX CFTextString cfStr; cfStr.format( CFSTR("%02d"), date.getWeekOfYearStartingSun() ); cfStr.copy( tmp, minVal<uint32>(cfStr.length(),tmpLen-1) ); tmp[minVal<uint32>(cfStr.length(),tmpLen-1) ] = 0; #elif defined(VCF_POSIX) || defined(VCF_CW_W32) || defined(VCF_DMC) swprintf( tmp, tmpLen-1, L"%02d", date.getWeekOfYearStartingSun() ); #else swprintf( tmp, L"%02d", date.getWeekOfYearStartingSun() ); #endif } result += tmp; current = p + 1; hashCharFound = false; formatArgCount = 1; } break; // %w - Weekday as decimal number (0 6; Sunday is 0) case 'w' : { result.append( current, (p-current) -formatArgCount ); #ifdef VCF_OSX CFTextString cfStr; cfStr.format( CFSTR("%d"), date.getWeekDay() ); cfStr.copy( tmp, minVal<uint32>(cfStr.length(),tmpLen-1) ); tmp[minVal<uint32>(cfStr.length(),tmpLen-1) ] = 0; #elif defined(VCF_POSIX) || defined(VCF_CW_W32) || defined(VCF_DMC) swprintf( tmp, tmpLen-1, L"%d", (int)date.getWeekDay() ); #else swprintf( tmp, L"%d", (int)date.getWeekDay() ); #endif result += tmp; current = p + 1; hashCharFound = false; formatArgCount = 1; } break; // %W - Week of year as decimal number, with Monday as first day of week (00 53) case 'W' : { result.append( current, (p-current) -formatArgCount ); if ( hashCharFound ) { #ifdef VCF_OSX CFTextString cfStr; cfStr.format( CFSTR("%d"), date.getWeekOfYearStartingMon() ); cfStr.copy( tmp, minVal<uint32>(cfStr.length(),tmpLen-1) ); tmp[minVal<uint32>(cfStr.length(),tmpLen-1) ] = 0; #elif defined(VCF_POSIX) || defined(VCF_CW_W32) || defined(VCF_DMC) swprintf( tmp, tmpLen-1, L"%d", date.getWeekOfYearStartingMon() ); #else swprintf( tmp, L"%d", date.getWeekOfYearStartingMon() ); #endif } else { #ifdef VCF_OSX CFTextString cfStr; cfStr.format( CFSTR("%02d"), date.getWeekOfYearStartingMon() ); cfStr.copy( tmp, minVal<uint32>(cfStr.length(),tmpLen-1) ); tmp[minVal<uint32>(cfStr.length(),tmpLen-1) ] = 0; #elif defined(VCF_POSIX) || defined(VCF_CW_W32) || defined(VCF_DMC) swprintf( tmp, tmpLen-1, L"%02d", date.getWeekOfYearStartingMon() ); #else swprintf( tmp, L"%02d", date.getWeekOfYearStartingMon() ); #endif } result += tmp; current = p + 1; hashCharFound = false; formatArgCount = 1; } break; // %x - Date representation for current locale case 'x' : { result.append( current, (p-current) -formatArgCount ); result += L"{Locale's Date}"; current = p + 1; hashCharFound = false; formatArgCount = 1; } break; // %X - Time representation for current locale case 'X' : { result.append( current, (p-current) -formatArgCount ); result += L"{Locale's Time}"; current = p + 1; hashCharFound = false; formatArgCount = 1; } break; // %y - Year without century, as decimal number (00 99) case 'y' : { result.append( current, (p-current) -formatArgCount ); if ( hashCharFound ) { #ifdef VCF_OSX CFTextString cfStr; cfStr.format( CFSTR("%d"), y % 100 ); cfStr.copy( tmp, minVal<uint32>(cfStr.length(),tmpLen-1) ); tmp[minVal<uint32>(cfStr.length(),tmpLen-1) ] = 0; #elif defined(VCF_POSIX) || defined(VCF_CW_W32) || defined(VCF_DMC) swprintf( tmp, tmpLen-1, L"%d", y % 100 ); #else swprintf( tmp, L"%d", y % 100 ); #endif } else { #ifdef VCF_OSX CFTextString cfStr; cfStr.format( CFSTR("%02d"), y % 100 ); cfStr.copy( tmp, minVal<uint32>(cfStr.length(),tmpLen-1) ); tmp[minVal<uint32>(cfStr.length(),tmpLen-1) ] = 0; #elif defined(VCF_POSIX) || defined(VCF_CW_W32) || defined(VCF_DMC) swprintf( tmp, tmpLen-1, L"%02d", y % 100 ); #else swprintf( tmp, L"%02d", y % 100 ); #endif } result += tmp; current = p + 1; hashCharFound = false; formatArgCount = 1; } break; // %Y - Year with century, as decimal number case 'Y' : { result.append( current, (p-current) -formatArgCount ); #ifdef VCF_OSX CFTextString cfStr; cfStr.format( CFSTR("%04d"), y ); cfStr.copy( tmp, minVal<uint32>(cfStr.length(),tmpLen-1) ); tmp[minVal<uint32>(cfStr.length(),tmpLen-1) ] = 0; #elif defined(VCF_POSIX) || defined(VCF_CW_W32) || defined(VCF_DMC) swprintf( tmp, tmpLen-1, L"%04d", y ); #else swprintf( tmp, L"%04d", y ); #endif result += tmp; current = p + 1; hashCharFound = false; formatArgCount = 1; } break; default : { hashCharFound = false; formatArgCount = 1; } break; } } p++; } if ( current < p ) { result.append( current, (p-current) ); } return result;}String StringUtils::convertFormatString( const String& formattedString ){ #ifdef VCF_OSX String result = formattedString; String lsDirective = "%ls"; size_t pos = result.find( lsDirective ); while ( pos != String::npos ) { result.erase( pos, lsDirective.length() ); result.insert( pos, "%s" ); pos = result.find( lsDirective, pos + 1 ); } return result; #else return formattedString; #endif}VCF::String StringUtils::toString( const VariantData& value ){ return value.toString();}VCF::String StringUtils::translateVKCodeToString( VirtualKeyCode code ){ VCF::String result; switch ( code ) { case vkF1: { result = "F1"; } break; case vkF2: { result = "F2"; } break; case vkF3: { result = "F3"; } break; case vkF4: { result = "F4"; } break; case vkF5: { result = "F5"; } break; case vkF6: { result = "F6"; } break; case vkF7: { result = "F7"; } break; case vkF8: { result = "F8"; } break; case vkF9: { result = "F9"; } break; case vkF10: { result = "F10"; } break; case vkF11: { result = "F11"; } break; case vkF12: { result = "F12"; } break; case vkUpArrow: { result = "Up"; } break; case vkDownArrow: { result = "Down"; } break; case vkLeftArrow: { result = "Left"; } break; case vkRightArrow: { result = "Right"; } break; case vkPgUp: { result = "Page Up"; } break; case vkPgDown: { result = "Page Down"; } break; case vkHome: { result = "Home"; } break; case vkEnd: { result = "End"; } break; case vkInsert: { result = "Ins"; } break; case vkDelete: { result = "Del"; } break; case vkBackSpace: { result = "Back"; } break; case vkNumber0: { result = "0"; } break; case vkNumber1: { result = "1"; } break; case vkNumber2: { result = "2"; } break; case vkNumber3: { result = "3"; } break; case vkNumber4: { result = "4"; } break; case vkNumber5: { result = "5"; } break; case vkNumber6: { result = "6"; } break; case vkNumber7: { result = "7"; } break; case vkNumber8: { result = "8"; } break; case vkNumber9: { result = "9"; } break; case vkLetterA: { result = "A"; } break; case vkLetterB: { result = "B"; } break; case vkLetterC: { result = "C"; } break; case vkLetterD: { result = "D"; } break; case vkLetterE: { result = "E"; } break; case vkLetterF: { result = "F"; } break; case vkLetterG: { result = "G"; } break; case vkLetterH: { result = "H"; } break; case vkLetterI: { result = "I"; } break; case vkLetterJ: { result = "J"; } break; case vkLetterK: { result = "K"; } break; case vkLetterL: { result = "L"; } break; case vkLetterM: { result = "M"; } break; case vkLetterN: { result = "N"; } break; case vkLetterO: { result = "O"; } break; case vkLetterP: { result = "P"; } break; case vkLetterQ: { result = "Q"; } break; case vkLetterR: {
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?