本文整理汇总了C++中UT_String::size方法的典型用法代码示例。如果您正苦于以下问题:C++ UT_String::size方法的具体用法?C++ UT_String::size怎么用?C++ UT_String::size使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类UT_String
的用法示例。
在下文中一共展示了UT_String::size方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1:
inline static void _catPath(UT_String& st, const char* st2)
{
if (st.size() > 0)
{
if (st[st.size() - 1] != '/')
st += '/';
}
else
st += '/';
st += st2;
}
示例2: UT_String_addPropertyString
/*!
* Assuming a string of standard abiword properties eg. "fred:nerk; table-width:1.0in; table-height:10.in"
* Add aother propety string, updating previously defined properties with
* values in the new string.
*/
void UT_String_addPropertyString(UT_String & sPropertyString, const UT_String & sNewProp)
{
UT_sint32 iSize = static_cast<UT_sint32>(sNewProp.size());
UT_sint32 iBase =0;
UT_String sProp;
UT_String sVal;
UT_String sSubStr;
const char * szWork = NULL;
const char * szLoc = NULL;
while(iBase < iSize)
{
bool bBreakAtEnd = false;
sSubStr = sNewProp.substr(iBase, iSize-iBase);
szWork = sSubStr.c_str();
szLoc = strstr(szWork,":");
if(szLoc)
{
sProp = sNewProp.substr(iBase,szLoc - szWork);
}
else
{
break;
}
iBase += szLoc-szWork+1;
sSubStr = sNewProp.substr(iBase, iSize-iBase);
szWork = sSubStr.c_str();
szLoc = strstr(szWork,";");
if(szLoc)
{
sVal = sNewProp.substr(iBase,szLoc - szWork);
iBase += szLoc-szWork+1;
}
else
{
sVal = sNewProp.substr(iBase,iSize-iBase);
bBreakAtEnd = true;
}
if((sProp.size()>0) && (sVal.size() >0))
{
UT_String_setProperty(sPropertyString,sProp,sVal);
}
else
{
break;
}
if(bBreakAtEnd)
{
break;
}
}
}
示例3: UT_String_findRCh
size_t UT_String_findRCh(const UT_String &st, char ch)
{
for (size_t i = st.size() ; i > 0; i--)
if (st[i] == ch)
return i;
return (size_t)-1;
}
示例4: UT_String_findCh
size_t UT_String_findCh(const UT_String &st, char ch)
{
for (size_t i = 0 ; i < st.size(); i++)
if (st[i] == ch)
return i;
return (size_t)-1;
}
示例5: calculateValue
bool fp_FieldTOCListLabelRun::calculateValue(void)
{
UT_UCSChar sz_ucs_FieldValue[FPFIELD_MAX_LENGTH + 1];
//
// First get owning TOC.
//
UT_ASSERT(getLength() == 0);
fl_TOCLayout * pTOCL = static_cast<fl_TOCLayout *>(getBlock()->myContainingLayout());
UT_ASSERT(pTOCL->getContainerType() == FL_CONTAINER_TOC);
UT_String str = pTOCL->getTOCListLabel(getBlock()).utf8_str();
if(str.size() == 0)
{
sz_ucs_FieldValue[0] = 0;
return _setValue(sz_ucs_FieldValue);
}
UT_sint32 i = 0;
bool bStop = false;
for(i=0; (i<FPFIELD_MAX_LENGTH) && !bStop; i++)
{
sz_ucs_FieldValue[i] = static_cast<UT_UCSChar>(str[i]);
if(str[i] == 0)
{
bStop = true;
}
}
return _setValue(sz_ucs_FieldValue);
}
示例6: init
void UT_LocaleInfo::init (const UT_String & locale)
{
if (locale.size () == 0)
return;
size_t dot = 0;
size_t hyphen = 0;
// take both hyphen types into account
hyphen = UT_String_findCh (locale, '_');
if (hyphen == (size_t)-1)
hyphen = UT_String_findCh (locale, '-');
dot = UT_String_findCh (locale, '.');
if (hyphen == (size_t)-1 && dot == (size_t)-1)
{
mLanguage = locale.c_str();
return;
}
if (hyphen != (size_t)-1 && dot != (size_t)-1)
{
if (hyphen < dot)
{
mLanguage = locale.substr (0, hyphen).c_str();
mTerritory = locale.substr (hyphen+1, dot-(hyphen+1)).c_str();
mEncoding = locale.substr (dot+1, locale.size ()-(dot+1)).c_str();
}
else
{
mLanguage = locale.substr (0, dot).c_str();
mEncoding = locale.substr (dot+1, locale.size ()-(dot+1)).c_str();
}
}
else if (dot != (size_t)-1)
{
mLanguage = locale.substr (0, dot).c_str();
mEncoding = locale.substr (dot+1, locale.size ()-(dot+1)).c_str();
}
else if (hyphen != (size_t)-1)
{
mLanguage = locale.substr (0, hyphen).c_str();
mEncoding = locale.substr (hyphen+1, locale.size ()-(hyphen+1)).c_str();
}
}
示例7:
const char * AP_UnixPrefs::_getPrefsPathname(void) const
{
/* return a pointer to a static buffer */
static UT_String buf;
if(!buf.empty())
return buf.c_str();
const char * szDirectory = XAP_App::getApp()->getUserPrivateDirectory();
const char * szFile = "AbiWord.Profile";
buf = szDirectory;
if (!buf.size() || szDirectory[buf.size()-1] != '/')
buf += "/";
buf += szFile;
return buf.c_str();
}
示例8: UT_String_setProperty
/*!
* Assuming a string of standard abiword properties eg. "fred:nerk; table-width:1.0in; table-height:10.in"
* Add the property sProp with value sVal to the string of properties. If the property is already present, replace the
* old value with the new value.
*/
void UT_String_setProperty(UT_String & sPropertyString, const UT_String & sProp, const UT_String & sVal)
{
//
// Remove the old value if it exists and tack the new property on the end.
//
UT_String_removeProperty(sPropertyString, sProp);
if(sPropertyString.size() > 0)
{
sPropertyString += "; ";
}
sPropertyString += sProp;
sPropertyString += ":";
sPropertyString += sVal;
}
示例9:
void XAP_Dictionary::_outputUTF8(const UT_UCSChar * data, UT_uint32 length)
{
UT_String buf;
const UT_UCSChar * pData;
for (pData = data; (pData<data+length); /**/)
{
if (*pData > 0x007f)
{
gchar outbuf[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
g_unichar_to_utf8(*pData++, outbuf);
buf += outbuf;
}
else
{
buf += (char)*pData++;
}
}
_writeBytes(reinterpret_cast<const UT_Byte *>(buf.c_str()),buf.size());
}
示例10: GetShortPathName
bool XAP_Win32AppImpl::openURL(const char * szURL)
{
// NOTE: could get finer control over browser window via DDE
// NOTE: may need to fallback to WinExec for old NSCP versions
UT_String sURL = szURL;
// If this is a file:// URL, strip off file:// and make it backslashed
if (sURL.substr(0, 7) == "file://")
{
sURL = sURL.substr(7, sURL.size() - 7);
// View as WebPage likes to throw in an extra /\ just for fun, strip it off
if (sURL.substr(0, 2) == "/\\")
sURL = sURL.substr(2, sURL.size() - 2);
if (sURL.substr(0, 1) == "/")
sURL = sURL.substr(1, sURL.size() - 1);
// Convert all forwardslashes to backslashes
for (unsigned int i=0; i<sURL.length();i++)
if (sURL[i]=='/')
sURL[i]='\\';
// Convert from longpath to 8.3 shortpath, in case of spaces in the path
char* longpath = NULL;
char* shortpath = NULL;
longpath = new char[PATH_MAX];
shortpath = new char[PATH_MAX];
strcpy(longpath, sURL.c_str());
DWORD retval = GetShortPathName(longpath, shortpath, PATH_MAX);
if((retval == 0) || (retval > PATH_MAX))
{
UT_ASSERT_HARMLESS(UT_SHOULD_NOT_HAPPEN);
DELETEP(longpath);
DELETEP(shortpath);
return false;
}
sURL = shortpath;
DELETEP(longpath);
DELETEP(shortpath);
}
// Query the registry for the default browser so we can directly invoke it
UT_String sBrowser;
HKEY hKey;
unsigned long lType;
DWORD dwSize;
unsigned char* szValue = NULL;
if (RegOpenKeyEx(HKEY_CLASSES_ROOT, "http\\shell\\open\\command", 0, KEY_READ, &hKey) == ERROR_SUCCESS)
{
if(RegQueryValueEx(hKey, NULL, NULL, &lType, NULL, &dwSize) == ERROR_SUCCESS)
{
szValue = new unsigned char[dwSize + 1];
RegQueryValueEx(hKey, NULL, NULL, &lType, szValue, &dwSize);
sBrowser = (char*) szValue;
DELETEP(szValue);
}
RegCloseKey(hKey);
}
/* Now that we have sBrowser from the registry, we need to parse it out.
* If the first character is a double-quote, everything up to and including
* the next double-quote is the sBrowser command. Everything after the
* double-quote is appended to the parameters.
* If the first character is NOT a double-quote, we assume
* everything up to the first whitespace is the command and anything after
* is appended to the parameters.
*/
int iDelimiter;
if (sBrowser.substr(0, 1) == "\"")
iDelimiter = UT_String_findCh(sBrowser.substr(1, sBrowser.length()-1), '"')+2;
else
iDelimiter = UT_String_findCh(sBrowser.substr(0, sBrowser.length()), ' ');
// Store params into a separate UT_String before we butcher sBrowser
UT_String sParams = sBrowser.substr(iDelimiter+1, sBrowser.length()-iDelimiter+1);
// Cut params off of sBrowser so all we're left with is the broweser path & executable
sBrowser = sBrowser.substr(0, iDelimiter);
// Check for a %1 passed in from the registry. If we find it,
// substitute our URL for %1. Otherwise, just append sURL to params.
const char *pdest = strstr(sParams.c_str(), "%1");
if (pdest != NULL)
{
int i = pdest - sParams.c_str() + 1;
sParams = sParams.substr(0, i-1) + sURL + sParams.substr(i+1, sParams.length()-i+1);
}
else
{
sParams = sParams + " " + sURL;
}
// Win95 doesn't like the Browser command to be quoted, so strip em off.
if (sBrowser.substr(0, 1) == "\"")
sBrowser = sBrowser.substr(1, sBrowser.length() - 1);
if (sBrowser.substr(sBrowser.length()-1, 1) == "\"")
sBrowser = sBrowser.substr(0, sBrowser.length() - 1);
//.........这里部分代码省略.........
示例11: s
#include "tf_test.h"
#include "ut_string_class.h"
#define TFSUITE "core.af.util.stringclass"
TFTEST_MAIN("UT_String")
{
UT_String s("foobar");
TFPASS(s.size() == 6);
TFPASS(s.length() == 6);
TFFAIL(s.empty());
TFPASS(s == "foobar");
TFPASS(s == UT_String("foobar"));
s += "baz";
TFPASS(s.size() == 9);
TFPASS(s == "foobarbaz");
s += UT_String("42");
TFPASS(s.size() == 11);
TFPASS(s == "foobarbaz42");
s += '!';
TFPASS(s.size() == 12);
TFPASS(s == "foobarbaz42!");
TFPASS(s[3] == 'b');
示例12: if
/*!
* Try loading a string-set.
* \param szStringSet Language id, e.g. de_AT
* \param pDefaultStringSet String set to be used for untranslated strings.
* \return AP_DiskStringSet * on success, NULL if not found
*/
AP_DiskStringSet *
AP_UnixApp::loadStringsFromDisk(const char * szStringSet,
AP_BuiltinStringSet * pDefaultStringSet)
{
UT_ASSERT(pDefaultStringSet);
const char * szDirectory = NULL;
getPrefsValueDirectory(true,
static_cast<const gchar*>(AP_PREF_KEY_StringSetDirectory),
static_cast<const gchar**>(&szDirectory));
UT_return_val_if_fail((szDirectory) && (*szDirectory), NULL);
UT_String szPathVariant[4];
char * p_strbuf = strdup("");
char * p_modifier = NULL;
int cur_id = 0;
bool three_letters = false; // some have 3!
if (szStringSet) {
FREEP(p_strbuf);
p_strbuf = strdup(szStringSet);
p_modifier = strrchr(p_strbuf,'@');
char t = szStringSet[2];
if (t && t!='-' && t!='@' && t!='_') three_letters = true;
}
if (p_modifier) {
// [email protected]
szPathVariant[cur_id] = szDirectory;
if (szDirectory[strlen(szDirectory)-1]!='/')
szPathVariant[cur_id] += "/";
szPathVariant[cur_id] += p_strbuf;
szPathVariant[cur_id] += ".strings";
cur_id++;
// [email protected]
if (szStringSet && strlen(szStringSet) > 2) {
szPathVariant[cur_id] = szDirectory;
if (szDirectory[strlen(szDirectory)-1]!='/')
szPathVariant[cur_id] += "/";
szPathVariant[cur_id] += p_strbuf[0];
szPathVariant[cur_id] += p_strbuf[1];
if (three_letters)
szPathVariant[cur_id] += p_strbuf[2];
szPathVariant[cur_id] += p_modifier;
szPathVariant[cur_id] += ".strings";
}
cur_id++;
// trim modifier part
*p_modifier = 0;
}
// fo_BA.strings
UT_String szPath = szDirectory;
if (szDirectory[szPath.size()-1]!='/')
szPath += "/";
szPath += p_strbuf;
szPath += ".strings";
// fo.strings
UT_String szFallbackPath;
if (szStringSet && strlen(szStringSet) > 2) {
szFallbackPath = szDirectory;
if (szDirectory[szFallbackPath.size()-1]!='/')
szFallbackPath += "/";
szFallbackPath += p_strbuf[0];
szFallbackPath += p_strbuf[1];
if (three_letters)
szFallbackPath += p_strbuf[2];
szFallbackPath += ".strings";
}
AP_DiskStringSet * pDiskStringSet = new AP_DiskStringSet(this);
FREEP(p_strbuf);
// trying to load specific strings first
for (int i=0; i<cur_id; i++) {
if (pDiskStringSet->loadStringsFromDisk(szPathVariant[i].c_str())) {
pDiskStringSet->setFallbackStringSet(pDefaultStringSet);
UT_DEBUGMSG(("Using [v] StringSet [%s]\n",szPathVariant[i].c_str()));
return pDiskStringSet;
}
}
// then generic ones
if (pDiskStringSet->loadStringsFromDisk(szPath.c_str()))
{
pDiskStringSet->setFallbackStringSet(pDefaultStringSet);
UT_DEBUGMSG(("Using StringSet [%s]\n",szPath.c_str()));
//.........这里部分代码省略.........
示例13: ev_EditMethod_invoke
bool ev_EditMethod_invoke (const EV_EditMethod * pEM, const UT_String & data)
{
EV_EditMethodCallData callData ( data.c_str(), static_cast<UT_uint32>(data.size()) ) ;
return ev_EditMethod_invoke ( pEM, &callData ) ;
}
示例14: strcmp
bool operator==(const UT_String& s1, const UT_String& s2)
{
if (s1.size() != s2.size()) return false;
return strcmp(s1.c_str(), s2.c_str()) == 0;
}
示例15: UT_String_removeProperty
/*!
* Assuming a string of standard abiword properties eg. "fred:nerk; table-width:1.0in; table-height:10.in"
* Remove the property sProp and it's value from the string of properties.
*/
void UT_String_removeProperty(UT_String & sPropertyString, const UT_String & sProp)
{
UT_String sWork ( sProp );
sWork += ":";
const char * szWork = sWork.c_str();
const char * szProps = sPropertyString.c_str();
const char * szLoc = strstr(szProps,szWork);
if(szLoc == NULL)
{
//
// Not here, do nothing
return ;
}
//
// Found it, Get left part.
//
UT_sint32 locLeft = static_cast<UT_sint32>(reinterpret_cast<size_t>(szLoc) - reinterpret_cast<size_t>(szProps));
UT_String sLeft;
if(locLeft == 0)
{
sLeft.clear();
}
else
{
sLeft = sPropertyString.substr(0,locLeft);
}
locLeft = static_cast<UT_sint32>(sLeft.size());
if(locLeft > 0)
{
//
// If this element is the last item in the properties there is no "; ".
//
// Remove trailing ';' and ' '
//
locLeft--;
while(locLeft >= 0 && (sLeft[locLeft] == ';' || sLeft[locLeft] == ' '))
{
locLeft--;
}
}
UT_String sNew;
if(locLeft > 0)
{
sNew = sLeft.substr(0,locLeft+1);
}
else
{
sNew.clear();
}
//
// Look for ";" to get right part
//
const char * szDelim = strchr(szLoc,';');
if(szDelim == NULL)
{
//
// No properties after this, just assign and return
//
sPropertyString = sNew;
}
else
{
//
// Just slice off the properties and tack them onto the pre-existing sNew
//
while(*szDelim == ';' || *szDelim == ' ')
{
szDelim++;
}
UT_sint32 offset = static_cast<UT_sint32>(reinterpret_cast<size_t>(szDelim) - reinterpret_cast<size_t>(szProps));
UT_sint32 iLen = sPropertyString.size() - offset;
if(sNew.size() > 0)
{
sNew += "; ";
}
sNew += sPropertyString.substr(offset,iLen);
sPropertyString = sNew;
}
}