本文整理汇总了C++中stlw::string类的典型用法代码示例。如果您正苦于以下问题:C++ string类的具体用法?C++ string怎么用?C++ string使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了string类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: InitHandler
//
// Initialize handler
//
INT_32 IrisEchoHandler::InitHandler(IRIS::GlobalContext & oGlobalContext,
const IRIS::HandlerConfig & oHandlerConfig,
IRIS::Logger & oLogger)
{
// Create thread group
pThreadGroup = new IrisEchoThreadGroup;
// Create set of threads
for (UINT_32 iPos = 0; iPos < oHandlerConfig.start_threads; ++iPos)
{
pThreadGroup -> CreateThread(new IrisEchoThreadWorker(oWorkerContext));
++oWorkerContext.threads;
oLogger.Notice("Echo thread %d started", oWorkerContext.threads);
}
const STLW::string sLogger = oHandlerConfig.logger.empty() ? oGlobalContext.config.logger_type : oHandlerConfig.logger;
// Get logger from factory for main process
pLoggerObject = static_cast<IRIS::LoggerObject *>(oGlobalContext.factory.GetObject("Logger/" + sLogger));
if (pLoggerObject == NULL)
{
oLogger.Emerg("Can't get logger `%s` for %s", sLogger.c_str(), GetObjectName());
return -1;
}
oLogger.Notice("Echo module initialized");
return 0;
}
示例2: CDT
// CTPP2
CTPP2::CTPP2(unsigned int arg_stack_size, unsigned int code_stack_size, unsigned int steps_limit, unsigned int max_functions,
STLW::string src_charset, STLW::string dst_charset) {
try {
params = new CDT(CDT::HASH_VAL);
syscalls = new SyscallFactory(max_functions);
STDLibInitializer::InitLibrary(*syscalls);
vm = new VM(syscalls, arg_stack_size, code_stack_size, steps_limit);
int i = 0;
while (functions[i])
bind(functions[i++]());
if (src_charset.size() && dst_charset.size()) {
charset.src = src_charset;
charset.dst = dst_charset;
charset.convert = true;
} else {
// Конвертирование не требуется
charset.convert = false;
}
} catch (...) {
cpp_free(params);
if (syscalls) {
STDLibInitializer::DestroyLibrary(*syscalls);
cpp_free(syscalls);
}
cpp_free(vm);
}
}
示例3: Handler
//
// Handler
//
INT_32 FnTruncate::Handler(CDT * aArguments,
const UINT_32 iArgNum,
CDT & oCDTRetVal,
Logger & oLogger)
{
if (iArgNum == 2)
{
const UINT_32 iMaxLen = UINT_32(aArguments[0].GetInt());
const STLW::string sData = aArguments[1].GetString();
if (sData.size() > iMaxLen) { oCDTRetVal = STLW::string(sData, 0, iMaxLen); }
else { oCDTRetVal = sData; }
return 0;
}
else if (iArgNum == 3)
{
const UINT_32 iMaxLen = UINT_32(aArguments[1].GetInt());
STLW::string sData = aArguments[2].GetString();
if (sData.size() > iMaxLen)
{
sData = STLW::string(sData, 0, iMaxLen);
sData.append(aArguments[0].GetString());
}
oCDTRetVal = sData;
return 0;
}
oLogger.Emerg("Usage: TRUNCATE(x, offest[, addon])");
return -1;
}
示例4: FindFile
//
// Find file in specified list of directories
//
INT_32 MainProcess::FindFile(const STLW::vector<STLW::string> & vDirectories,
const STLW::string & sFilename,
STLW::string & sFullpath)
{
STLW::vector<STLW::string>::const_iterator itvDirectories = vDirectories.begin();
while (itvDirectories != vDirectories.end())
{
sFullpath.erase();
const STLW::string & sDir(*itvDirectories);
if (sDir.size())
{
sFullpath.assign(sDir);
if (sDir[sDir.size() - 1] != '/') { sFullpath.append(1, '/'); }
}
sFullpath.append(sFilename);
const INT_64 iFileHandle = File::Open(sFullpath.c_str(), OpenMode::READ);
if (iFileHandle != -1)
{
File::Close(iFileHandle);
return 0;
}
++itvDirectories;
}
return -1;
}
示例5: UnixSetup
//
// Switch to unprivileged user
//
static INT_32 UnixSetup(const WorkerConfig & oWorkerConfig,
ASLogger & oLogger)
{
// Set proper UID/GID
if (getuid() == 0)
{
oLogger.Info("Switching to user/group %d:%d", oWorkerConfig.gid, oWorkerConfig.uid);
if (oWorkerConfig.uid == 0)
{
oLogger.Emerg("CAS FastCGI server won't work from superuser account (root).");
return EX_SOFTWARE;
}
else
{
// Set additional groups
if (!oWorkerConfig.gids.empty())
{
const size_t iGroups = oWorkerConfig.gids.size();
gid_t * aGids = new gid_t[iGroups];
for(UINT_32 iPos = 0; iPos < iGroups; ++iPos) { aGids[iPos] = oWorkerConfig.gids[iPos]; }
if (setgroups(oWorkerConfig.gids.size(), aGids) == -1)
{
STLW::string sGroups;
for(UINT_32 iPos = 0; iPos < iGroups; ++iPos)
{
CHAR_8 szGroup[64];
snprintf(szGroup, 63, "%llu ", (long long unsigned)aGids[iPos]);
sGroups.append(szGroup);
}
delete [] aGids;
const INT_32 iErrNo = errno;
oLogger.Emerg("Can't set additional groups %s: %s error code %d", sGroups.c_str(), strerror(iErrNo), iErrNo);
return EX_SOFTWARE;
}
delete [] aGids;
}
if (setgid(oWorkerConfig.gid) == -1)
{
const INT_32 iErrNo = errno;
oLogger.Emerg("Can't set group id to %d: %s error code %d", INT_32(oWorkerConfig.gid), strerror(iErrNo), iErrNo);
return EX_SOFTWARE;
}
if (setuid(oWorkerConfig.uid) == -1)
{
const INT_32 iErrNo = errno;
oLogger.Emerg("Can't set user id to %d: %s, error code %d", INT_32(oWorkerConfig.uid), strerror(iErrNo), iErrNo);
return EX_SOFTWARE;
}
}
}
oLogger.Info("Switching to unprivileged user completed");
return EX_OK;
}
示例6: GetBaseDir
static STLW::string GetBaseDir(const STLW::string & szTemplateName, STLW::string & sNormalizedFileName)
{
STLW::string sResult;
CHAR_8 szPath[MAX_PATH];
CHAR_P szFile = NULL;
DWORD dwLen = ::GetFullPathNameA(szTemplateName.c_str(), MAX_PATH, szPath, &szFile);
if (szFile == NULL) { return ""; }
sNormalizedFileName.assign(szPath, dwLen);
sResult.assign(szPath, szFile);
return sResult;
}
示例7: Handler
//
// Handler
//
INT_32 FnHTMLEscape::Handler(CDT * aArguments,
const UINT_32 iArgNum,
CDT & oCDTRetVal,
Logger & oLogger)
{
if (iArgNum < 1)
{
oLogger.Emerg("Usage: HTMLESCAPE(a[, b, ...])");
return -1;
}
STLW::string sResult;
for(INT_32 iPos = iArgNum - 1; iPos >=0; --iPos) { sResult.append(aArguments[iPos].GetString()); }
oCDTRetVal = HTMLEscape(sResult);
return 0;
}
示例8: main
int main(void)
{
CDT oArgs;
oArgs.PushBack(101.5);
oArgs.PushBack(101.4);
STLW::string sResult;
FormatString("_%0.2f_", sResult, oArgs);
fwrite(sResult.c_str(), sResult.size(), 1, stdout);
// make valgrind happy
fclose(stdin);
fclose(stdout);
fclose(stderr);
return EX_OK;
}
示例9: EscapeString
static STLW::string EscapeString(const STLW::string & sSource)
{
if (sSource.empty()) { return "\"\""; }
STLW::string::const_iterator itsSource = sSource.begin();
while (itsSource != sSource.end())
{
const UCHAR_8 ucTMP = *itsSource;
if (!((ucTMP >= 'a' && ucTMP <= 'z') ||
(ucTMP >= 'A' && ucTMP <= 'Z') ||
(ucTMP >= '0' && ucTMP <= '9') ||
ucTMP == '.' || ucTMP == '_' || ucTMP == ':' || ucTMP == '*' ||
ucTMP == '[' || ucTMP == ']' || ucTMP == '\\' || ucTMP == '/' || ucTMP == '-'))
{
return '"' + sSource + '"';
}
++itsSource;
}
return sSource;
}
示例10: FmtChar
//
// Character
//
static void FmtChar(StringBuffer & oBuffer,
const CDT & oCurrentArgument,
const UINT_32 iFmtFlags,
const INT_32 iWidth,
CHAR_8 chPadSymbol)
{
const CDT::eValType oValType = oCurrentArgument.GetType();
if (oValType == CDT::UNDEF && iWidth > 0)
{
oBuffer.Append(iWidth, chPadSymbol);
return;
}
UCHAR_8 ucTMP = ' ';
if (oValType == CDT::INT_VAL || oValType == CDT::REAL_VAL)
{
ucTMP = oCurrentArgument.GetInt();
}
else if (oValType == CDT::STRING_VAL)
{
const STLW::string sTMP = oCurrentArgument.GetString();
if (sTMP.empty() && iWidth > 0)
{
oBuffer.Append(iWidth, chPadSymbol);
return;
}
ucTMP = sTMP[0];
}
else if (oValType == CDT::POINTER_VAL) { ucTMP = 'P'; }
else if (oValType == CDT::ARRAY_VAL) { ucTMP = 'A'; }
else if (oValType == CDT::HASH_VAL) { ucTMP = 'H'; }
if (iFmtFlags & F_LEFT_ALIGN)
{
oBuffer.Append(1, ucTMP);
if (iWidth > 1) { oBuffer.Append(iWidth - 1, chPadSymbol); }
}
else
{
if (iWidth > 1) { oBuffer.Append(iWidth - 1, chPadSymbol); }
oBuffer.Append(1, ucTMP);
}
}
示例11: Handler
//
// Handler
//
INT_32 FnJSONEscape::Handler(CDT * aArguments,
const UINT_32 iArgNum,
CDT & oCDTRetVal,
Logger & oLogger)
{
if (iArgNum < 1)
{
oLogger.Emerg("Usage: JSONESCAPE(a[, b, ...])");
return -1;
}
STLW::string sResult;
for(INT_32 iPos = iArgNum - 1; iPos >=0; --iPos)
{
switch (aArguments[iPos].GetType())
{
case CDT::UNDEF:
sResult.append("null", 4);
break;
case CDT::INT_VAL:
case CDT::REAL_VAL:
case CDT::POINTER_VAL:
case CDT::STRING_INT_VAL:
case CDT::STRING_REAL_VAL:
sResult.append(aArguments[iPos].GetString());
break;
case CDT::STRING_VAL:
sResult.append(EscapeJSONString(aArguments[iPos].GetString(), true, false));
break;
default:
oLogger.Emerg("Invalid type %s", aArguments[iPos].PrintableType());
return -1;
}
}
oCDTRetVal = sResult;
return 0;
}
示例12: sTMP
static STLW::string GetBaseDir(const STLW::string & szTemplateName, STLW::string & sNormalizedFileName)
{
if (szTemplateName.length() == 0) { return ""; }
STLW::vector<STLW::string> vCurrentDir;
CCHAR_P sBegin = szTemplateName.c_str();
CCHAR_P szEnd = szTemplateName.c_str() + szTemplateName.length();
CCHAR_P sIter = sBegin;
while (sIter != szEnd)
{
if (*sIter == '/')
{
if (sIter != sBegin)
{
STLW::string sTMP(sBegin, sIter);
if (sTMP == "/." || sTMP == "/") { ;; }
else if (sTMP == "/..")
{
STLW::vector<STLW::string>::iterator itEnd = vCurrentDir.end();
if (vCurrentDir.begin() == itEnd) { return ""; }
vCurrentDir.erase(--itEnd);
}
else
{
vCurrentDir.push_back(sTMP);
}
}
sBegin = sIter;
}
++sIter;
}
STLW::string sTMP(sBegin, sIter);
if (sTMP == "/") { return ""; }
STLW::string sResult;
for (UINT_32 iI = 0; iI < vCurrentDir.size(); ++iI) { sResult.append(vCurrentDir[iI]); }
sNormalizedFileName.assign(sResult);
sNormalizedFileName.append(sTMP);
sResult.append("/");
return sResult;
}
示例13: FmtString
//
// String
//
static void FmtString(StringBuffer & oBuffer,
const CDT & oCurrentArgument,
const UINT_32 iFmtFlags,
const INT_32 iWidth,
const INT_32 iMaxChars,
CHAR_8 chPadSymbol)
{
const STLW::string sTMP = oCurrentArgument.GetString();
INT_32 iFormatSize = sTMP.size();
if (iFormatSize > iMaxChars && iMaxChars > 0) { iFormatSize = iMaxChars; }
if (iFmtFlags & F_LEFT_ALIGN)
{
oBuffer.Append(sTMP.data(), iFormatSize);
if (iWidth > iFormatSize) { oBuffer.Append(iWidth - iFormatSize, chPadSymbol); }
}
else
{
if (iWidth > iFormatSize) { oBuffer.Append(iWidth - iFormatSize, chPadSymbol); }
oBuffer.Append(sTMP.data(), iFormatSize);
}
}
示例14: IterateString
static void IterateString(FILE * F, CCHAR_P szData, UINT_64 iDataLen, STLW::string & sResultString)
{
STLW::string::iterator itsResultString = sResultString.begin();
for(;;)
{
UINT_32 iUCS = 0;
const INT_64 iCharLen = Unicode::UTF8ToWide(szData, iDataLen, iUCS);
if (iCharLen <= 0) { break; }
Unicode::WideToUTF8(iUCS, itsResultString);
iDataLen -= iCharLen;
fprintf(F, "0x%X ", iUCS);
}
fprintf(F, "\n");
}
示例15: sError
//
// Load template with specified name
//
INT_32 CTPP2FileSourceLoader::LoadTemplate(CCHAR_P szTemplateName)
{
sNormalizedFileName.erase();
INT_32 iStatCode = 0;
STLW::vector<STLW::string>::const_iterator itvIncludeDirs = vIncludeDirs.begin();
while(itvIncludeDirs != vIncludeDirs.end())
{
STLW::string sTMP = *itvIncludeDirs;
#ifdef WIN32
if ( sTMP.length() && sTMP[sTMP.length() - 1] != '/' && sTMP[sTMP.length() - 1] != '\\' ) { sTMP.append("\\", 1); }
#else
if (sTMP.length() && sTMP[sTMP.length() - 1] != '/') { sTMP.append("/", 1); }
#endif
sTMP.append(szTemplateName);
sCurrentDir = GetBaseDir(sTMP, sNormalizedFileName);
if (sNormalizedFileName.length() == 0)
{
STLW::string sError("invalid file name `");
sError.append(sTMP);
sError.append("`");
throw CTPPLogicError(sError.c_str());
}
// Get file size
struct stat oStat;
iStatCode = stat(sNormalizedFileName.c_str(), &oStat);
if (iStatCode == 0)
{
iTemplateSize = oStat.st_size;
break;
}
++itvIncludeDirs;
}
if (iStatCode == -1)
{
STLW::string sError("cannot find file in include directories ");
itvIncludeDirs = vIncludeDirs.begin();
for (;;)
{
sError.append("`");
if (itvIncludeDirs -> size() != 0) { sError.append(*itvIncludeDirs); }
else
{
CHAR_P szPWD = getcwd(NULL, 0);
sError.append(szPWD);
free(szPWD);
}
sError.append("`");
++itvIncludeDirs;
if (itvIncludeDirs == vIncludeDirs.end()) { break; }
sError.append(", ");
}
throw CTPPLogicError(sError.c_str());
}
if (iTemplateSize == 0)
{
STLW::string sError("empty file `");
sError.append(sNormalizedFileName);
sError.append("` found");
throw CTPPLogicError(sError.c_str());
}
// Load file
FILE * F = fopen(sNormalizedFileName.c_str(), "rb");
if (F == NULL) { throw CTPPUnixException("fopen", errno); }
if (sTemplate != NULL) { free(sTemplate); }
// Allocate memory
sTemplate = (CHAR_P)malloc(iTemplateSize);
// Read from file
if (fread(sTemplate, iTemplateSize, 1, F) != 1)
{
if (ferror(F) != 0)
{
free(sTemplate);
fclose(F);
throw CTPPUnixException("fread", errno);
}
else
{
free(sTemplate);
fclose(F);
throw CTPPLogicError("Cannot read from file");
}
}
fclose(F);
return 0;
}