本文整理汇总了C++中String::Add方法的典型用法代码示例。如果您正苦于以下问题:C++ String::Add方法的具体用法?C++ String::Add怎么用?C++ String::Add使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类String
的用法示例。
在下文中一共展示了String::Add方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: ConvertStringToFilePath
/// Convert the path separator characters in the given object path to valid directory delimiters for the current
/// platform.
///
/// Note that objects with instance indices are not supported for file paths. Instance index delimiters will not be
/// converted, and may be invalid file name characters on certain platforms.
///
/// @param[out] rFilePath Converted file path.
/// @param[in] rPackagePath Asset path string to convert (can be the same as the output file path).
void AssetPath::ConvertStringToFilePath( String& rFilePath, const String& rPackagePath )
{
#if HELIUM_PACKAGE_PATH_CHAR != HELIUM_PATH_SEPARATOR_CHAR && HELIUM_PACKAGE_PATH_CHAR != HELIUM_ALT_PATH_SEPARATOR_CHAR
size_t pathLength = rPackagePath.GetSize();
if( &rFilePath == &rPackagePath )
{
for( size_t characterIndex = 0; characterIndex < pathLength; ++characterIndex )
{
char& rCharacter = rFilePath[ characterIndex ];
if( rCharacter == HELIUM_PACKAGE_PATH_CHAR || rCharacter == HELIUM_OBJECT_PATH_CHAR )
{
rCharacter = Helium::s_InternalPathSeparator;
}
}
}
else
{
rFilePath.Remove( 0, rFilePath.GetSize() );
rFilePath.Reserve( rPackagePath.GetSize() );
for( size_t characterIndex = 0; characterIndex < pathLength; ++characterIndex )
{
char character = rPackagePath[ characterIndex ];
if( character == HELIUM_PACKAGE_PATH_CHAR || character == HELIUM_OBJECT_PATH_CHAR )
{
character = Helium::s_InternalPathSeparator;
}
rFilePath.Add( character );
}
}
#else
rFilePath = rPackagePath;
#endif
}
示例2: QuoteStr
void WINAPI QuoteStr(String& str)
{
String buff;
if(str.Chr(quotes) == -1)
return;
buff.Add('\"');
for(int n = 0; n < str.Length(); n++)
if(str[n] == '\"')
{
buff.Add('\"');
buff.Add('\"');
}
else
buff.Add(str[n]);
buff.Add('\"');
str = buff;
}
示例3: MkUrl
void FTPHost::MkUrl(String& str,LPCSTR Path,LPCSTR nm,BOOL sPwd)
{
bool defPara = StrCmp(User,"anonymous") == 0 &&
StrCmp(Password,Opt.DefaultPassword) == 0;
if(!defPara && User[0])
{
if(Password[0])
str.printf("ftp://%s:%[email protected]%s",
User,
(sPwd || IS_FLAG(Opt.PwdSecurity,SEC_PLAINPWD)) ? Password : "",
Host);
else
str.printf("ftp://%[email protected]%s",User,Host);
}
else
str.printf("ftp://%s",Host);
if(Path && *Path)
{
if(*Path != '/')
str.Add('/');
str.cat(Path);
}
if(nm && *nm)
{
int len = str.Length()-1;
if(len >= 0 && str[len] != '/' && str[len] != '\\')
str.Add('/');
str.Add(nm);
}
FixFTPSlash(str);
}
示例4: BuildPacket
/// Builds a packet using set stats and returns it as a string.
String SIPPacket::BuildPacket(){
// Check other stuff.
String fullPacket;
// Initial CRLF
fullPacket.Add("\r\n");
for (int i = 0; i < header.Size(); ++i){
fullPacket.Add(header[i]);
fullPacket.Add("\r\n");
}
// Add separating CRLF
fullPacket.Add("\r\n");
for (int i = 0; i < body.Size(); ++i){
fullPacket.Add(body[i]);
fullPacket.Add("\r\n");
}
fullPacket.Add("\r\n\r\n");
return fullPacket;
}
示例5: GetSection
/// Fetches target section in string using given start and end-tokens. Returns the first occurance, if any, or an empty string if none such exist.
String GetSection(String inString, char withStartToken, char andEndToken){
int startIndex = -1, endIndex = -1;
for (int i = 0; i < inString.Length(); ++i){
char c = inString.CharAt(i);
if (c == withStartToken)
startIndex = i+1;
if (c == andEndToken)
endIndex = i;
if (startIndex >= 0 && endIndex >= 0)
break;
}
if (startIndex < 0 && endIndex < 0)
return String();
String newString;
for (int i = startIndex; i < endIndex; ++i){
newString.Add(inString.CharAt(i));
}
std::cout<<"newString: "<<newString<<" length: "<<newString.Length();
return newString;
}
示例6: BuildHeader
// Ref: http://tools.ietf.org/html/rfc3261#section-24
// Builds the header using the previously set parameters. Call this again if you change any of them!
void SIPPacket::BuildHeader(){
// Make sure body is set before calculating header-parameters!
if (!bodySet){
std::cout<< "ERROR: Body not set before calling SIPPacket::BuildHeader! Fix this, yo.";
assert(bodySet);
}
// Set default sender (us) if no sender already specified.
if (!sender)
sender = defaultSender;
if (!senderSet){
SetSender(sender);
}
if (!recipientSet){
SetRecipient(recipient);
}
header.Clear();
String typeName = PacketTypeName();
switch(type){
case SIP_REGISTER:
case SIP_INFO:
case SIP_INVITE:
case SIP_BYE:
case SIP_ACK:
case SIP_CANCEL:
case SIP_OPTIONS:
case SIP_SUBSCRIBE:
case SIP_NOTIFY:
header.Add(typeName+" sip:"+recipientAddress+" SIP/"+SIPVersion);
break;
case SIP_OK:
case SIP_BAD_REQUEST:
header.Add("SIP/"+String(SIPVersion)+" "+typeName);
break;
default:
std::cout<<"Unrecognized packet type: "<<type<<" typeName: "<<typeName;
assert(false && "Unrecognized packet-type when setting first row in SIP message header. Add a new case for it?");
break;
}
String toString = "To: "+recipientData;
/// Only do this if the recipient is known.
SIPSessionData * recipientSessionData = NULL;
if (recipient){
recipientSessionData = (SIPSessionData*)recipient->GetSessionData(SessionType::SIP);
if (recipientSessionData->theirTag.Length()){
toString.Add(";tag="+recipientSessionData->theirTag);
}
}
header.Add(toString);
String senderString = "From: "+senderData;
if (recipientSessionData){
if (recipientSessionData->ourTag.Length()){
senderString.Add(";tag="+recipientSessionData->ourTag);
}
}
header.Add(senderString);
// TODO: Add Call-ID ?
// Add CSeq
if (cSeq.Length())
header.Add("CSeq: "+cSeq);
// Script-type, for Subscribe messages
if (event.Length()){
header.Add("Script: "+event);
}
// TODO: Add Contact
if (expirationTime >= 0)
header.Add("Expires: "+String::ToString(expirationTime));
int bodyLength = BodyLength();
if (bodyLength > 0){
if (!contentType.Length())
contentType = "application/customP2PMediaProtocol";
header.Add("Content-Type: "+contentType);
}
header.Add("Content-Length: "+String::ToString(bodyLength));
headerSet = true;
}