本文整理汇总了C++中basic_string::length方法的典型用法代码示例。如果您正苦于以下问题:C++ basic_string::length方法的具体用法?C++ basic_string::length怎么用?C++ basic_string::length使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类basic_string
的用法示例。
在下文中一共展示了basic_string::length方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: make_errno_system_error
basic_string< TargetChar > convert( const basic_string< SourceChar > &sourceString,
size_t ( *convertFunction )( TargetChar *dst, const SourceChar **src, size_t len, mbstate_t *state )) {
constexpr auto LENGTH_ERROR = static_cast< size_t >( -1 );
mbstate_t state = mbstate_t();
// Find out how much space we need:
const SourceChar *sourceStringData = sourceString.data();
size_t expectedTargetStringLength = convertFunction( nullptr, &sourceStringData, sourceString.length(), &state );
if ( expectedTargetStringLength == LENGTH_ERROR )
throw make_errno_system_error();
// Convert the string:
basic_string< TargetChar > targetString( expectedTargetStringLength, TargetChar() );
size_t actualTargetStringLength = convertFunction( &targetString[ 0 ], &sourceStringData, sourceString.length(), &state );
if ( actualTargetStringLength == LENGTH_ERROR )
throw make_errno_system_error();
// Could all characters be converted?
if ( expectedTargetStringLength != actualTargetStringLength )
throw system_error( make_error_code( errc::illegal_byte_sequence ));
return targetString;
}
示例2: CTempXStr
CTempXStr(const basic_string<_TChar>& str, size_t pos, size_t length)
: m_Data(str.data()+pos), m_Length(length)
{
if (pos == x_npos()) {
m_Data = str.data();
m_Length = 0;
} else {
m_Data = str.data()+pos;
if (length == x_npos()) {
m_Length = str.length() - pos;
} else {
m_Length = length;
if (m_Length + pos > str.length()) {
m_Length = str.length() - pos;
}
}
}
}
示例3:
bool KeyValueString<T>::GetKeyValueFromPair(const basic_string<T> & keyValuePair, basic_string<T> & key, basic_string<T> & value) const
{
size_t kvSeparatorPosition = keyValuePair.find(_keyValueSeparator);
if (kvSeparatorPosition == basic_string<T>::npos)
return false;
key = keyValuePair.substr(0, kvSeparatorPosition);
value = keyValuePair.substr(kvSeparatorPosition + 1, keyValuePair.length() - kvSeparatorPosition - 1);
return true;
}
示例4: nthSubstrg
int nthSubstrg(int n, const basic_string<T>& s,
const basic_string<T>& p,
bool repeats = false) {
string::size_type i = s.find(p);
string::size_type adv = (repeats) ? 1 : p.length( );
int j;
for (j = 1; j < n && i != basic_string<T>::npos; ++j)
i = s.find(p, i+adv);
if (j == n)
return(i);
else
return(-1);
}
示例5: compare
static int compare(const basic_string<CharType> & str1, const basic_string<CharType> & str2){
size_t min_length = (str1.length() < str2.length() ? str1.length() : str2.length());
for(size_t i = 0; i < min_length; i++){
if(str1[i] < str2[i]){
return -1;
}else if(str1[i] > str2[i]){
return 1;
}
}
// if all characters are compared
if(str1.length() < str2.length()){
return -1;
}else if(str1.length() > str2.length()){
return 1;
}
return 0;
}
示例6: EOS
basic_string<T> KeyValueString<T>::Encode(const basic_string<T> & sourceData, const T separator)
{
basic_string<T> result;
result.reserve(sourceData.length() + 8);
size_t i = 0;
const T terminatingNull = EOS(T());
while(terminatingNull != sourceData[i])
{
result += sourceData[i];
if(sourceData[i] == separator)
result += separator;
++i;
}
result += separator;
return result;
}
示例7: if
basic_string<T> KeyValueString<T>::Decode(const basic_string<T> & encodedPair, const T separator)
{
basic_string<T> result;
result.reserve(encodedPair.length());
size_t i = 0;
const T terminatingNull = EOS(T());
while(terminatingNull != encodedPair[i])
{
if(separator != encodedPair[i])
result += encodedPair[i];
else if(separator == encodedPair[i + 1])
{
result += separator;
++i;
}
++i;
}
return result;
}
示例8: pad
void pad(basic_string <T> &s,
typename basic_string<T>::size_type n, T c) {
if (n > s.length())
s.append(n - s.length(), c);
}