本文整理汇总了C++中MyString::Substr方法的典型用法代码示例。如果您正苦于以下问题:C++ MyString::Substr方法的具体用法?C++ MyString::Substr怎么用?C++ MyString::Substr使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类MyString
的用法示例。
在下文中一共展示了MyString::Substr方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: strnewp
//---------------------------------------------------------------------------
const char *
Job::GetJobstateJobTag()
{
if ( !_jobTag ) {
MyString jobTagName = MultiLogFiles::loadValueFromSubFile(
_cmdFile, _directory, JOB_TAG_NAME );
if ( jobTagName == "" ) {
jobTagName = PEGASUS_SITE;
} else {
// Remove double-quotes
int begin = jobTagName[0] == '\"' ? 1 : 0;
int last = jobTagName.Length() - 1;
int end = jobTagName[last] == '\"' ? last - 1 : last;
jobTagName = jobTagName.Substr( begin, end );
}
MyString tmpJobTag = MultiLogFiles::loadValueFromSubFile(
_cmdFile, _directory, jobTagName.Value() );
if ( tmpJobTag == "" ) {
tmpJobTag = "-";
} else {
// Remove double-quotes
int begin = tmpJobTag[0] == '\"' ? 1 : 0;
int last = tmpJobTag.Length() - 1;
int end = tmpJobTag[last] == '\"' ? last - 1 : last;
tmpJobTag = tmpJobTag.Substr( begin, end );
}
_jobTag = strnewp( tmpJobTag.Value() );
}
return _jobTag;
}
示例2: strArg
int
parseMyProxyArgument (const char * arg,
char * & user,
char * & host,
int & port) {
MyString strArg (arg);
int at_idx = strArg.FindChar ((int)'@');
int colon_idx = strArg.FindChar ((int)':', at_idx+1);
if (at_idx != -1) {
MyString _user = strArg.Substr (0, at_idx-1);
user = strdup(_user.Value());
}
if (colon_idx == -1) {
MyString _host = strArg.Substr (at_idx+1, strArg.Length()-1);
host = strdup(_host.Value());
} else {
MyString _host = strArg.Substr (at_idx+1, colon_idx-1);
host = strdup(_host.Value());
MyString _port = strArg.Substr (colon_idx+1, strArg.Length()-1);
port = atoi(_port.Value());
}
return TRUE;
}
示例3: malloc
bool
Regex::match(const MyString & string,
ExtArray<MyString> * groups)
{
if ( ! this->isInitialized() ) {
return false;
}
int group_count;
pcre_fullinfo(re, NULL, PCRE_INFO_CAPTURECOUNT, &group_count);
int oveccount = 3 * (group_count + 1); // +1 for the string itself
int * ovector = (int *) malloc(oveccount * sizeof(int));
if (!ovector) {
// XXX: EXCEPTing sucks
EXCEPT("No memory to allocate data for re match");
}
int rc = pcre_exec(re,
NULL,
string.Value(),
string.Length(),
0, // Index in string from which to start matching
options,
ovector,
oveccount);
if (NULL != groups) {
for (int i = 0; i < rc; i++) {
(*groups)[i] = string.Substr(ovector[i * 2], ovector[i * 2 + 1] - 1);
}
}
free(ovector);
return rc > 0;
}
示例4: strchr
/** Parse the arguments line of an existing .condor.sub file, extracing
the arguments we want to preserve when updating the .condor.sub file.
@param subLine: the arguments line from the .condor.sub file
@param shallowOpts: the condor_submit_dag shallow options
@return 0 if successful, 1 if failed
*/
int
parseArgumentsLine( const MyString &subLine,
SubmitDagShallowOptions &shallowOpts )
{
const char *line = subLine.Value();
const char *start = strchr( line, '"' );
const char *end = strrchr( line, '"' );
MyString arguments;
if ( start && end ) {
arguments = subLine.Substr( start - line, end - line );
} else {
fprintf( stderr, "Missing quotes in arguments line: <%s>\n",
subLine.Value() );
return 1;
}
ArgList arglist;
MyString error;
if ( !arglist.AppendArgsV2Quoted( arguments.Value(),
&error ) ) {
fprintf( stderr, "Error parsing arguments: %s\n", error.Value() );
return 1;
}
for ( int argNum = 0; argNum < arglist.Count(); argNum++ ) {
MyString strArg = arglist.GetArg( argNum );
strArg.lower_case();
(void)parsePreservedArgs( strArg, argNum, arglist.Count(),
arglist.GetStringArray(), shallowOpts);
}
return 0;
}
示例5: convert_hostname_to_ipaddr
condor_sockaddr convert_hostname_to_ipaddr(const MyString& fullname)
{
MyString hostname;
MyString default_domain;
bool truncated = false;
if (param(default_domain, "DEFAULT_DOMAIN_NAME")) {
MyString dotted_domain = ".";
dotted_domain += default_domain;
int pos = fullname.find(dotted_domain.Value());
if (pos != -1) {
truncated = true;
hostname = fullname.Substr(0, pos - 1);
}
}
if (!truncated)
hostname = fullname;
// detects if hostname is IPv6
//
// hostname is NODNS coded address
//
// for example,
// it could be 127-0-0-1 (127.0.0.1) as IPv4 address
// it could be fe80-3577--1234 ( fe80:3577::1234) as IPv6 address
//
// it is IPv6 address
// 1) if there are 7 '-'
// 2) if there are '--' which means compaction of zeroes in IPv6 adress
char target_char;
bool ipv6 = false;
if (hostname.find("--") != -1)
ipv6 = true;
else {
int dash_count = 0;
for (int i = 0; i < hostname.Length(); ++i)
if (hostname[i] == '-')
++dash_count;
if (dash_count == 7)
ipv6 = true;
}
if (ipv6)
target_char = ':';
else
target_char ='.';
// converts hostname to IP address string
for (int i = 0; i < hostname.Length(); ++i) {
if (hostname[i] == '-')
hostname.setChar(i, target_char);
}
condor_sockaddr ret;
ret.from_ip_string(hostname);
return ret;
}
示例6: getWritePassword
//! Gets the writer password required by the quill++
// daemon to access the database
static MyString getWritePassword(const char *write_passwd_fname,
const char *host, const char *port,
const char *db,
const char *dbuser) {
FILE *fp = NULL;
MyString passwd;
int len;
MyString prefix;
MyString msbuf;
const char *buf;
bool found = FALSE;
// prefix is for the prefix of the entry in the .pgpass
// it is in the format of the following:
// host:port:db:user:password
prefix.sprintf("%s:%s:%s:%s:", host, port, db, dbuser);
len = prefix.Length();
fp = safe_fopen_wrapper(write_passwd_fname, "r");
if(fp == NULL) {
EXCEPT("Unable to open password file %s\n", write_passwd_fname);
}
//dprintf(D_ALWAYS, "prefix: %s\n", prefix);
while(msbuf.readLine(fp)) {
msbuf.chomp();
buf = msbuf.Value();
//fprintf(stderr, "line: %s\n", buf);
// check if the entry matches the prefix
if (strncmp(buf, prefix.Value(), len) == 0) {
// extract the password
passwd = msbuf.Substr(len, msbuf.Length());
found = TRUE;
break;
}
}
fclose(fp);
if (!found) {
EXCEPT("Unable to find password from file %s\n", write_passwd_fname);
}
return passwd;
}
示例7: init_local_hostname_impl
//.........这里部分代码省略.........
if( ! nodns_enabled() ) {
const int MAX_TRIES = 20;
const int SLEEP_DUR = 3;
bool gai_success = false;
for(int try_count = 1; true; try_count++) {
addrinfo hint = get_default_hint();
hint.ai_family = AF_UNSPEC;
int ret = ipv6_getaddrinfo(test_hostname.Value(), NULL, ai, hint);
if(ret == 0) { gai_success = true; break; }
if(ret != EAI_AGAIN ) {
dprintf(D_ALWAYS, "init_local_hostname_impl: ipv6_getaddrinfo() could not look up '%s': %s (%d). Error is not recoverable; giving up. Problems are likely.\n", test_hostname.Value(), gai_strerror(ret), ret );
gai_success = false;
break;
}
dprintf(D_ALWAYS, "init_local_hostname_impl: ipv6_getaddrinfo() returned EAI_AGAIN for '%s'. Will try again after sleeping %d seconds (try %d of %d).\n", test_hostname.Value(), SLEEP_DUR, try_count + 1, MAX_TRIES );
if(try_count == MAX_TRIES) {
dprintf(D_ALWAYS, "init_local_hostname_impl: ipv6_getaddrinfo() never succeeded. Giving up. Problems are likely\n");
break;
}
sleep(SLEEP_DUR);
}
if(gai_success) {
int local_hostname_desireability = 0;
#ifdef TEST_DNS_TODO
int local_ipaddr_desireability = 0;
int local_ipv4addr_desireability = 0;
int local_ipv6addr_desireability = 0;
#endif
while (addrinfo* info = ai.next()) {
// TODO: the only time ai_canonname should be set is the first
// record. Why are we testing its desirability?
const char* name = info->ai_canonname;
if (!name)
continue;
condor_sockaddr addr(info->ai_addr);
int desireability = addr.desirability();
const char * result = "skipped for low score";
if(desireability > local_hostname_desireability) {
result = "new winner";
dprintf(D_HOSTNAME, " I like it.\n");
local_hostname_desireability = desireability;
const char* dotpos = strchr(name, '.');
if (dotpos) { // consider it as a FQDN
local_fqdn = name;
local_hostname = local_fqdn.Substr(0, dotpos-name-1);
} else {
local_hostname = name;
local_fqdn = local_hostname;
MyString default_domain;
if (param(default_domain, "DEFAULT_DOMAIN_NAME")) {
if (default_domain[0] != '.')
local_fqdn += ".";
local_fqdn += default_domain;
}
}
}
dprintf(D_HOSTNAME, "hostname: %s (score %d) %s\n", name, desireability, result);
#ifdef TEST_DNS_TODO
// Resist urge to set local_ip*addr_initialized=true,
// We want to repeatedly retest this looking for
// better results.
if (!local_ipaddr_initialized) {
replace_higher_scoring_addr("IP",
local_ipaddr, local_ipaddr_desireability,
addr, desireability);
}
if (addr.is_ipv4() && !local_ipv4addr_initialized) {
replace_higher_scoring_addr("IPv4",
local_ipv4addr, local_ipv4addr_desireability,
addr, desireability);
}
if (addr.is_ipv6() && !local_ipv6addr_initialized) {
replace_higher_scoring_addr("IPv6",
local_ipv6addr, local_ipv6addr_desireability,
addr, desireability);
}
#else
// Make Fedora quit complaining.
if( local_ipv4addr_initialized && local_ipv6addr_initialized && local_fqdn_initialized ) {
local_ipv4addr_initialized = false;
local_ipv6addr_initialized = false;
local_fqdn_initialized = false;
}
#endif
}
}
}
return true;
}
示例8: listDirectoriesInPath
MyString
which(const MyString &strFilename, const MyString &strAdditionalSearchDirs)
{
MyString strPath = getenv( EnvGetName( ENV_PATH ) );
dprintf( D_FULLDEBUG, "Path: %s\n", strPath.Value());
char path_delim[3];
sprintf( path_delim, "%c", PATH_DELIM_CHAR );
StringList listDirectoriesInPath( strPath.Value(), path_delim );
#ifdef WIN32
int iLength = strFilename.Length();
if (!strcasecmp(strFilename.Substr(iLength - 4, iLength - 1).Value(), ".dll"))
{ // if the filename ends in ".dll"
// in order to mimic the behavior of LoadLibrary
// we need to artificially insert some other stuff in the search path
/* from MSDN LoadLibrary
1.) The directory from which the application loaded.
2.) The current directory.
Windows XP: If HKLM\System\CurrentControlSet\Control\SessionManager\SafeDllSearchMode is 1, the current directory is the last directory searched. The default value is 0.
3.) The Windows system directory. Use the GetSystemDirectory function to get the path of this directory.
Windows NT/2000/XP: The wname of this directory is System32.
4.) Windows NT/2000/XP: The 16-bit Windows system directory. There is no function that obtains the path of this directory, but it is searched. The name of this directory is System.
5.) The Windows directory. Use the GetWindowsDirectory function to get the path of this directory.
6.) The directories that are listed in the PATH environment variable.
*/
listDirectoriesInPath.rewind();
listDirectoriesInPath.next();
// #5
char psNewDir[MAX_PATH];
if (GetWindowsDirectory(psNewDir, MAX_PATH) > 0)
listDirectoriesInPath.insert(psNewDir);
else
dprintf( D_FULLDEBUG, "GetWindowsDirectory() failed, err=%d\n", GetLastError());
listDirectoriesInPath.rewind();
listDirectoriesInPath.next();
// #4
strcat(psNewDir, "\\System");
listDirectoriesInPath.insert(psNewDir);
listDirectoriesInPath.rewind();
listDirectoriesInPath.next();
// #3
if (GetSystemDirectory(psNewDir, MAX_PATH) > 0)
listDirectoriesInPath.insert(psNewDir);
else
dprintf( D_FULLDEBUG, "GetSystemDirectory() failed, err=%d\n", GetLastError());
listDirectoriesInPath.rewind();
listDirectoriesInPath.next();
// #2
if (_getcwd(psNewDir, MAX_PATH))
listDirectoriesInPath.insert(psNewDir);
else
dprintf( D_FULLDEBUG, "_getcwd() failed, err=%d\n", errno);
// #1 had better be covered by the user passing in strAdditionalSearchDirs
}
#endif
listDirectoriesInPath.rewind();
listDirectoriesInPath.next();
// add additional dirs if specified
if( strAdditionalSearchDirs != "" ) {
// path_delim was set above
StringList listAdditionalSearchDirs( strAdditionalSearchDirs.Value(), path_delim );
listDirectoriesInPath.create_union(listAdditionalSearchDirs, false);
}
listDirectoriesInPath.rewind();
const char *psDir;
while( (psDir = listDirectoriesInPath.next()) )
{
dprintf( D_FULLDEBUG, "Checking dir: %s\n", psDir );
char *psFullDir = dircat(psDir, strFilename.Value());
MyString strFullDir = psFullDir;
delete [] psFullDir;
StatInfo info(strFullDir.Value());
if( info.Error() == SIGood ) {
return strFullDir;
}
}
return "";
}
示例9: init_local_hostname
void init_local_hostname()
{
// [m.]
// initializing local hostname, ip address, fqdn was
// super complex.
//
// implementation was scattered over condor_netdb and
// my_hostname, get_full_hostname.
//
// above them has duplicated code in many ways.
// so I aggregated all of them into here.
bool ipaddr_inited = false;
char hostname[MAXHOSTNAMELEN];
int ret;
// [TODO:IPV6] condor_gethostname is not IPv6 safe.
// reimplement it.
ret = condor_gethostname(hostname, sizeof(hostname));
if (ret) {
dprintf(D_ALWAYS, "condor_gethostname() failed. Cannot initialize "
"local hostname, ip address, FQDN.\n");
return;
}
dprintf(D_HOSTNAME, "condor_gethostname() claims we are %s\n", hostname);
// Fallback case.
local_hostname = hostname;
// if NETWORK_INTERFACE is defined, we use that as a local ip addr.
MyString network_interface;
if (param(network_interface, "NETWORK_INTERFACE", "*")) {
if (local_ipaddr.from_ip_string(network_interface))
ipaddr_inited = true;
}
// Dig around for an IP address in the interfaces
// TODO WARNING: Will only return IPv4 addresses!
if( ! ipaddr_inited ) {
std::string ip;
if( ! network_interface_to_ip("NETWORK_INTERFACE", network_interface.Value(), ip, NULL)) {
dprintf(D_ALWAYS, "Unable to identify IP address from interfaces. None matches NETWORK_INTERFACE=%s. Problems are likely.\n", network_interface.Value());
return;
}
if ( ! local_ipaddr.from_ip_string(ip))
{
// Should not happen; means network_interface_to_ip returned
// invalid IP address.
ASSERT(FALSE);
}
ipaddr_inited = true;
}
// now initialize hostname and fqdn
if (nodns_enabled()) { // if nodns is enabled, we can cut some slack.
// condor_gethostname() returns a hostname with
// DEFAULT_DOMAIN_NAME. Thus, it is always fqdn
local_fqdn = hostname;
if (!ipaddr_inited) {
local_ipaddr = convert_hostname_to_ipaddr(local_hostname);
}
return;
}
addrinfo_iterator ai;
ret = ipv6_getaddrinfo(hostname, NULL, ai);
if (ret) {
// write some error message
dprintf(D_HOSTNAME, "hostname %s cannot be resolved by getaddrinfo\n",
hostname);
return;
}
int local_hostname_desireability = 0;
while (addrinfo* info = ai.next()) {
const char* name = info->ai_canonname;
if (!name)
continue;
condor_sockaddr addr(info->ai_addr);
int desireability = 0;
if (addr.is_loopback()) { desireability = 1; }
else if(addr.is_private_network()) { desireability = 2; }
else { desireability = 3; }
dprintf(D_HOSTNAME, "Considering %s (Ranked at %d) as possible local hostname versus %s/%s (%d)\n", name, desireability, local_hostname.Value(), local_fqdn.Value(), local_hostname_desireability);
if(desireability < local_hostname_desireability) { continue; }
local_hostname_desireability = desireability;
if (!ipaddr_inited)
local_ipaddr = addr;
const char* dotpos = strchr(name, '.');
if (dotpos) { // consider it as a FQDN
local_fqdn = name;
local_hostname = local_fqdn.Substr(0, dotpos-name-1);
} else {
local_hostname = name;
local_fqdn = local_hostname;
MyString default_domain;
//.........这里部分代码省略.........