本文整理汇总了C++中SString::Append方法的典型用法代码示例。如果您正苦于以下问题:C++ SString::Append方法的具体用法?C++ SString::Append怎么用?C++ SString::Append使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类SString
的用法示例。
在下文中一共展示了SString::Append方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: RegularExpressionize
inline void SStringTokenizer::RegularExpressionize()
{
SString exp = m_delimeters;
exp.Prepend("[^");
exp.Append("]+");
m_regexp.SetTo(exp);
}
示例2: CombinePath
void CombinePath(SString &pathA,
SString &pathB,
SString &combinedPath)
{
BINDER_LOG_ENTER(W("Utils::CombinePath"));
BINDER_LOG_STRING(W("path A"), pathA);
BINDER_LOG_STRING(W("path B"), pathB);
SString platformPathSeparator(SString::Literal, GetPlatformPathSeparator());
combinedPath.Set(pathA);
if (!combinedPath.EndsWith(platformPathSeparator))
{
combinedPath.Append(platformPathSeparator);
}
combinedPath.Append(pathB);
BINDER_LOG_LEAVE(W("Utils::CombinePath"));
}
示例3: _DbgBreakCheck
//*****************************************************************************
// This function will handle ignore codes and tell the user what is happening.
//*****************************************************************************
bool _DbgBreakCheck(
LPCSTR szFile,
int iLine,
LPCSTR szExpr,
BOOL fConstrained)
{
STATIC_CONTRACT_THROWS;
STATIC_CONTRACT_GC_NOTRIGGER;
STATIC_CONTRACT_FORBID_FAULT;
STATIC_CONTRACT_DEBUG_ONLY;
RaiseExceptionOnAssert(rTestAndRaise);
if (DebugBreakOnAssert())
{
DebugBreak();
}
DBGIGNORE* pDBGIFNORE = GetDBGIGNORE();
_DBGIGNOREDATA *psData;
int i;
// Check for ignore all.
for (i = 0, psData = pDBGIFNORE->Ptr(); i < pDBGIFNORE->Count(); i++, psData++)
{
if (psData->iLine == iLine && SString::_stricmp(psData->rcFile, szFile) == 0 && psData->bIgnore == true)
{
return false;
}
}
CONTRACT_VIOLATION(FaultNotFatal | GCViolation | TakesLockViolation);
SString debugOutput;
SString dialogOutput;
SString modulePath;
SString dialogTitle;
SString dialogIgnoreMessage;
BOOL formattedMessages = FALSE;
// If we are low on memory we cannot even format a message. If this happens we want to
// contain the exception here but display as much information as we can about the exception.
if (!fConstrained)
{
EX_TRY
{
ClrGetModuleFileName(0, modulePath);
debugOutput.Printf(
W("\nAssert failure(PID %d [0x%08x], Thread: %d [0x%04x]): %hs\n")
W(" File: %hs Line: %d\n")
W(" Image: "),
GetCurrentProcessId(), GetCurrentProcessId(),
GetCurrentThreadId(), GetCurrentThreadId(),
szExpr, szFile, iLine);
debugOutput.Append(modulePath);
debugOutput.Append(W("\n\n"));
// Change format for message box. The extra spaces in the title
// are there to get around format truncation.
dialogOutput.Printf(
W("%hs\n\n%hs, Line: %d\n\nAbort - Kill program\nRetry - Debug\nIgnore - Keep running\n")
W("\n\nImage:\n"), szExpr, szFile, iLine);
dialogOutput.Append(modulePath);
dialogOutput.Append(W("\n"));
dialogTitle.Printf(W("Assert Failure (PID %d, Thread %d/0x%04x)"),
GetCurrentProcessId(), GetCurrentThreadId(), GetCurrentThreadId());
dialogIgnoreMessage.Printf(W("Ignore the assert for the rest of this run?\nYes - Assert will never fire again.\nNo - Assert will continue to fire.\n\n%hs\nLine: %d\n"),
szFile, iLine);
formattedMessages = TRUE;
}
EX_CATCH
{
}
EX_END_CATCH(SwallowAllExceptions);
}
示例4: if
SString
TypeToCPPType(const InterfaceRec* rec, const sptr<IDLType>& obj, bool asConst)
{
// Convert IDLType into a C++ type name
// rec can be NULL if we are writing the type inside the class, otherwise
// it must point to the owning class (for typedefs)
SString cpptype = obj->GetName();
if (cpptype==NULL) {
bout << "<----- outpututil.cpp -----> invalid type when converting to CPP;" << endl;
_exit(1);
}
else {
// Binder Types
// IClass* -> sptr<IClass>
// [weak] IClass* -> wptr<IClass>
// (both of these types have the name of "sptr")
if (cpptype=="sptr") {
if (obj->HasAttribute(kWeak) == true) {
cpptype = "wptr";
}
InterfaceRec* iface=FindInterface(obj->GetIface());
cpptype.Append("<");
if (iface->ID()== "Binder") { cpptype.Append("I"); }
cpptype.Append(iface->ID());
cpptype.Append(">");
if (asConst) {
cpptype.Prepend("const ");
cpptype.Append("&");
}
}
else if ((cpptype=="SString") || (cpptype=="SValue") || (cpptype=="SMessage")) {
if (asConst) {
cpptype.Prepend("const ");
cpptype.Append("&");
}
}
else if (cpptype=="char*") {
if (asConst) {
// in the rare case this is a const char*
cpptype.Prepend("const ");
}
else {
cpptype="SString";
}
}
else if (cpptype=="void") {
; // cpptype is fine as is
}
else {
// deal with typedefs...
// If the stored type is different than the object type, then
// we have a user defined typedef...
// add in the class name as a qualifier, because they are defined
// inside the IClass definition.
sptr<IDLType> storedtype=FindType(obj);
if (storedtype->GetName() != obj->GetName() && rec != kInsideClassScope) {
SString classQualifier = rec->ID();
classQualifier.Append("::");
cpptype.Prepend(classQualifier);
}
if (asConst) {
uint32_t code = storedtype->GetCode();
if (code == B_WILD_TYPE || code == B_VARIABLE_ARRAY_TYPE) {
// If B_WILD_TYPE then we have an exported type
// that we really don't know about, or
// if B_VARIABLE_ARRAY_TYPE, then we have a sequence
// typedef. Both of which want const references
// for input parameters.
cpptype.Prepend("const ");
cpptype.Append("&");
}
}
}
}
return cpptype;
}
示例5:
SString
FromSValueExpression(const InterfaceRec* rec,
const sptr<IDLType>& vartype,
const SString& varname,
const SString& valuename,
ExpressionKind kind,
bool setError)
{
// Create the appropriate expression for converting from an SValue
// We do this here, so we don't have to special case the code all over OutputCPP.cpp
// There are 8 different places where FromSValueConversion is called,
// all just slightly different than the other.
// However, they can be grouped into the following categories:
// INITIALIZE, // BClass v = BClass(value, &err);
// ASSIGN, // arg = BClass(value, &err);
// INDIRECT_ASSIGN, // *arg = BClass(value, &err);
// RETURN // return BClass(value, &err);
// sequences, which are handled in C++ as SVector must be treated differently.
// INITIALIZE, // VectorClass v; v.SetFromValue(value, &err);
// ASSIGN, // arg.SetFromValue(value, &err);
// INDIRECT_ASSIGN, // arg->SetFromValue(value, &err);
// RETURN // return VectorClass(value, &err);
SString expr;
sptr<IDLType> storedtype=FindType(vartype);
if (storedtype->GetCode() != B_VARIABLE_ARRAY_TYPE) {
switch (kind) {
case INITIALIZE:
{
expr.Append(TypeToCPPType(rec, vartype, false));
expr.Append(" ");
expr.Append(varname);
expr.Append(kAssignStr);
break;
}
case ASSIGN:
expr.Append(varname);
expr.Append(kAssignStr);
break;
case INDIRECT_ASSIGN:
expr.Append("*");
expr.Append(varname);
expr.Append(kAssignStr);
break;
case RETURN:
expr.Append("return ");
break;
}
}
else {
// The SFlattenable signature for SetFromValue doesn't set any errors, just returns them
setError = false;
switch (kind) {
case INITIALIZE:
// VectorClass v; v.SetFromValue(value, &err);
expr.Append(TypeToCPPType(rec, vartype, false));
expr.Append(" ");
expr.Append(varname);
expr.Append(";\n");
expr.Append(varname);
expr.Append(".");
break;
case ASSIGN:
// arg.SetFromValue(value, &err);
expr.Append(varname);
expr.Append(".");
break;
case INDIRECT_ASSIGN:
// arg->SetFromValue(value, &err);
expr.Append(varname);
expr.Append("->");
break;
case RETURN:
// VectorClass rv; rv.SetFromValue(value, &err); return rv;
expr.Append(TypeToCPPType(rec, vartype, false));
expr.Append(" ");
expr.Append(varname);
expr.Append(";\n");
expr.Append(varname);
expr.Append(".");
// ... to be continued after FromSValueConversion
break;
}
}
expr.Append(FromSValueConversion(vartype, valuename, setError));
expr.Append(";");
if (storedtype->GetCode() == B_VARIABLE_ARRAY_TYPE && kind == RETURN) {
expr.Append("\nreturn ");
expr.Append(varname);
expr.Append(";");
}
return expr;
}
示例6: PopCharacter
StringLexer::LEXEME_TYPE
StringLexer::ParseString(SString ¤tString, BOOL fPermitUnescapedQuotes)
{
BOOL fIsFirstCharacter = TRUE;
WCHAR wcCurrentChar = INVALID_CHARACTER;
WCHAR wcOpeningQuote = INVALID_CHARACTER;
currentString.Clear();
// Read until we find another lexeme that's not a string character
for (;;)
{
BOOL fIsEscaped = FALSE;
wcCurrentChar = PopCharacter(&fIsEscaped);
if (wcCurrentChar == INVALID_CHARACTER)
{
// Found invalid character encoding
BINDER_LOG(L"StringLexer::ParseString: Invalid character encoding");
return LEXEME_TYPE_INVALID;
}
if (IsEOS(wcCurrentChar))
{
if (IsQuoteCharacter(wcOpeningQuote))
{
// EOS and unclosed quotes is an error
BINDER_LOG(L"StringLexer::ParseString: EOS and unclosed quotes");
return LEXEME_TYPE_INVALID;
}
else
{
// Reached end of input and therefore of string
break;
}
}
if (fIsFirstCharacter)
{
fIsFirstCharacter = FALSE;
// If first character is quote, then record its quoteness
if (IsQuoteCharacter(wcCurrentChar))
{
wcOpeningQuote = wcCurrentChar;
continue;
}
}
if (wcCurrentChar == wcOpeningQuote)
{
// We've found the closing quote for a quoted string
break;
}
if (!fPermitUnescapedQuotes && !fIsEscaped && IsQuoteCharacter(wcCurrentChar) && !IsQuoteCharacter(wcOpeningQuote))
{
// Unescaped quotes in the middle of the string are an error
BINDER_LOG(L"StringLexer::ParseString: Quote in the middle of a string");
return LEXEME_TYPE_INVALID;
}
if (IsSeparatorChar(wcCurrentChar) && !IsQuoteCharacter(wcOpeningQuote) && !fIsEscaped)
{
// Unescaped separator char terminates the string
PushCharacter(wcCurrentChar, fIsEscaped);
break;
}
// Add character to current string
currentString.Append(wcCurrentChar);
}
if (!IsQuoteCharacter(wcOpeningQuote))
{
// Remove trailing white spaces from unquoted string
BINDER_LOG(L"StringLexer::ParseString: Trimming string");
TrimTrailingWhiteSpaces(currentString);
}
BINDER_LOG_STRING(L"string", currentString);
return LEXEME_TYPE_STRING;
}