本文整理汇总了C++中basic_string::data方法的典型用法代码示例。如果您正苦于以下问题:C++ basic_string::data方法的具体用法?C++ basic_string::data怎么用?C++ basic_string::data使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类basic_string
的用法示例。
在下文中一共展示了basic_string::data方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: str_common
size_t str_common(const basic_string<C>& s1, const basic_string<C>& s2, size_t start = 0) noexcept {
if (start >= s1.size() || start >= s2.size())
return 0;
auto p = s1.data() + start;
for (auto q = s2.data() + start, endp = p + std::min(s1.size(), s2.size()); p != endp && *p == *q; ++p, ++q) {}
return p - s1.data() - start;
}
示例2: min
ostream& __STL_CALL operator<<(ostream& __os,
const basic_string<_CharT,_Traits,_Alloc>& __s)
{
__STL_USING_VENDOR_STD
streambuf* __buf = __os.rdbuf();
if (__buf) {
size_t __n = __s.size();
size_t __pad_len = 0;
const bool __left = (__os.flags() & ios::left) !=0;
const size_t __w = __os.width();
if (__w > 0) {
__n = min(__w, __n);
__pad_len = __w - __n;
}
if (!__left)
__sgi_string_fill(__os, __buf, __pad_len);
const size_t __nwritten = __buf->sputn(__s.data(), __n);
if (__left)
__sgi_string_fill(__os, __buf, __pad_len);
if (__nwritten != __n)
__os.clear(__os.rdstate() | ios::failbit);
__os.width(0);
}
else
__os.clear(__os.rdstate() | ios::badbit);
return __os;
}
示例3: 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;
}
示例4: str_expect
bool str_expect(UtfIterator<C>& i, const UtfIterator<C>& end, const basic_string<C>& prefix) {
size_t psize = prefix.size();
if (psize == 0 || end.offset() - i.offset() < psize
|| memcmp(i.source().data() + i.offset(), prefix.data(), psize) != 0)
return false;
i = utf_iterator(i.source(), i.offset() + psize);
return true;
}
示例5: 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;
}
}
}
}
示例6: streamsize
basic_ostream<_CharT, _Traits>& __STL_CALL
operator<<(basic_ostream<_CharT, _Traits>& __os,
const basic_string<_CharT,_Traits,_Alloc>& __s)
{
__STL_USING_VENDOR_STD
typedef basic_ostream<_CharT, _Traits> __ostream;
typename __ostream::sentry __sentry(__os);
bool __ok = false;
if (__sentry) {
__ok = true;
size_t __n = __s.size();
size_t __pad_len = 0;
const bool __left = (__os.flags() & __ostream::left) != 0;
const size_t __w = __os.width(0);
basic_streambuf<_CharT, _Traits>* __buf = __os.rdbuf();
if (__w > 0 && __n < __w) {
__pad_len = __w - __n;
}
if (!__left)
__ok = __sgi_string_fill(__os, __buf, __pad_len);
__ok = __ok && (__buf->sputn(__s.data(), streamsize(__n)) == streamsize(__n));
if (__left)
__ok = __ok && __sgi_string_fill(__os, __buf, __pad_len);
}
if (!__ok)
__os.setstate(__ostream::failbit);
return __os;
}
示例7: strncmp
bool operator < (const basic_string<CharType, BaseType>& left, const basic_string<CharType, BaseType>& right)
{
return strncmp(left.data(), right.data(), left.size() < right.size() ? left.size() : right.size()) < 0;
}
示例8: str_ends_with
bool str_ends_with(const basic_string<C>& str, const C* suffix) noexcept {
if (! suffix)
return true;
auto count = cstr_size(suffix);
return str.size() >= count && memcmp(str.data() + str.size() - count, suffix, sizeof(C) * count) == 0;
}
示例9: str_starts_with
bool str_starts_with(const basic_string<C>& str, const C* prefix) noexcept {
if (! prefix)
return true;
auto count = cstr_size(prefix);
return str.size() >= count && memcmp(str.data(), prefix, sizeof(C) * count) == 0;
}