⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cstring.hpp

📁 新版本TR1的stl
💻 HPP
📖 第 1 页 / 共 2 页
字号:
#endif /* STLSOFT_CF_TEMPLATE_PARTIAL_SPECIALISATION_SUPPORT */

inline ss_char_a_t *strncat(ss_char_a_t *dest, ss_char_a_t const* src, ss_size_t n)
{
    return stlsoft_std_ns_qual(strncat_)(dest, src, n);
}

inline ss_char_w_t *strncat(ss_char_w_t *dest, ss_char_w_t const* src, ss_size_t n)
{
    return stlsoft_std_ns_qual(strncat_)(dest, src, n);
}

/// @}

/// \name Length and comparison family
/// @{

#ifndef STLSOFT_DOCUMENTATION_SKIP_SECTION

#ifndef _STLSOFT_NO_NAMESPACE
namespace std_impl
{
#endif /* _STLSOFT_NO_NAMESPACE */

    inline int strcmp_a(ss_char_a_t const* s1, ss_char_a_t const* s2)
    {
        return ::strcmp(s1, s2);
    }
    inline int strcmp_w(ss_char_w_t const* s1, ss_char_w_t const* s2)
    {
        return ::wcscmp(s1, s2);
    }
    inline int strcmp_(ss_char_a_t const* s1, ss_char_a_t const* s2)
    {
        return strcmp_a(s1, s2);
    }
    inline int strcmp_(ss_char_w_t const* s1, ss_char_w_t const* s2)
    {
        return strcmp_w(s1, s2);
    }

    inline int strncmp_a(ss_char_a_t const* s1, ss_char_a_t const* s2, ss_size_t n)
    {
        return ::strncmp(s1, s2, n);
    }
    inline int strncmp_w(ss_char_w_t const* s1, ss_char_w_t const* s2, ss_size_t n)
    {
        return ::wcsncmp(s1, s2, n);
    }
    inline int strncmp_(ss_char_a_t const* s1, ss_char_a_t const* s2, ss_size_t n)
    {
        return strncmp_a(s1, s2, n);
    }
    inline int strncmp_(ss_char_w_t const* s1, ss_char_w_t const* s2, ss_size_t n)
    {
        return strncmp_w(s1, s2, n);
    }

#ifndef _STLSOFT_NO_NAMESPACE
} // namespace std_impl
#endif /* _STLSOFT_NO_NAMESPACE */

#endif /* !STLSOFT_DOCUMENTATION_SKIP_SECTION */


template <ss_typename_param_k S>
inline ss_size_t strlen(S const& s)
{
    return stlsoft_ns_qual(c_str_len)(s);
}

inline ss_size_t strlen(ss_char_a_t const* s)
{
    return ::strlen(s);
}

inline ss_size_t strlen(ss_char_w_t const* s)
{
    return ::wcslen(s);
}


template <ss_typename_param_k S>
inline int strcmp(S const& s1, S const& s2)
{
    return stlsoft_std_ns_qual(strcmp_)(stlsoft_ns_qual(c_str_ptr)(s1), stlsoft_ns_qual(c_str_ptr)(s2));
}

inline int strcmp(ss_char_a_t const* s1, ss_char_a_t const* s2)
{
    return ::strcmp(s1, s2);
}

inline int strcmp(ss_char_w_t const* s1, ss_char_w_t const* s2)
{
    return ::wcscmp(s1, s2);
}


template <ss_typename_param_k S>
inline int strncmp(S const& s1, S const& s2, ss_size_t n)
{
    return stlsoft_std_ns_qual(strncmp_)(stlsoft_ns_qual(c_str_ptr)(s1), stlsoft_ns_qual(c_str_ptr)(s2), n);
}

inline int strncmp(ss_char_a_t const* s1, ss_char_a_t const* s2, ss_size_t n)
{
    return ::strncmp(s1, s2, n);
}

inline int strncmp(ss_char_w_t const* s1, ss_char_w_t const* s2, ss_size_t n)
{
    return ::wcsncmp(s1, s2, n);
}

/// @}



/// \name Searching family
/// @{

inline ss_char_a_t const* strchr(ss_char_a_t const* s, ss_char_a_t ch)
{
    return ::strchr(s, ch);
}

inline ss_char_w_t const* strchr(ss_char_w_t const* s, ss_char_w_t ch)
{
    return ::wcschr(s, ch);
}


inline ss_char_a_t const* strrchr(ss_char_a_t const* s, ss_char_a_t ch)
{
    return ::strrchr(s, ch);
}

inline ss_char_w_t const* strrchr(ss_char_w_t const* s, ss_char_w_t ch)
{
    return ::wcsrchr(s, ch);
}


inline ss_char_a_t const* strstr(ss_char_a_t const* s, ss_char_a_t const* charSet)
{
    return ::strstr(s, charSet);
}

inline ss_char_w_t const* strstr(ss_char_w_t const* s, ss_char_w_t const* charSet)
{
    return ::wcsstr(s, charSet);
}

#if 0
// NOTE: Can't do the ones that return pointers, since the shims may return temporaries. That would *not be good
ss_size_t  __cdecl strcspn(char const*, char const*);
ss_size_t  __cdecl strspn(char const*, char const*);
char *  __cdecl strpbrk(char const*, char const*);




#endif /* 0 */

/// @}

#ifndef STLSOFT_DOCUMENTATION_SKIP_SECTION

#ifndef _STLSOFT_NO_NAMESPACE
namespace std_impl
{
#endif /* _STLSOFT_NO_NAMESPACE */

    inline ss_char_a_t *strdup_a(ss_char_a_t const* s)
    {
        return ::strdup(s);
    }
    inline ss_char_w_t *strdup_w(ss_char_w_t const* s)
    {
#  if defined(STLSOFT_COMPILER_IS_BORLAND) || \
      (   defined(STLSOFT_COMPILER_IS_GCC) && \
          !defined(WIN32)) || \
      defined(STLSOFT_COMPILER_IS_WATCOM)
        const ss_size_t len =   ::wcslen(s);
        ss_char_w_t     *sz =   static_cast<ss_char_w_t*>(::malloc(sizeof(ss_char_w_t) * (1 + len)));

        if(NULL != sz)
        {
            ::wcscpy(sz, s);
        }

        return sz;
#  else /* ? compiler */
        return ::wcsdup(const_cast<ss_char_w_t*>(s));
#  endif /* compiler */
    }
    inline ss_char_a_t *strdup_(ss_char_a_t const* s)
    {
        return strdup_a(s);
    }
    inline ss_char_w_t *strdup_(ss_char_w_t const* s)
    {
        return strdup_w(s);
    }

#ifndef _STLSOFT_NO_NAMESPACE
} // namespace std_impl
#endif /* _STLSOFT_NO_NAMESPACE */

#endif /* !STLSOFT_DOCUMENTATION_SKIP_SECTION */


/** \brief Duplicates the given string
 *
 * \ingroup group__library__utility
 *
 * \note The returned string is allocated by the standard strdup() function,
 * which uses malloc() to allocate the memory, and so must be freed using free()
 */
#ifdef STLSOFT_CF_TEMPLATE_PARTIAL_SPECIALISATION_SUPPORT
template <ss_typename_param_k S>
inline ss_typename_type_k string_traits<S>::char_type *strdup(S const& s)
{
    return stlsoft_std_ns_qual(strdup_)(stlsoft_ns_qual(c_str_ptr)(s));
}
#endif /* STLSOFT_CF_TEMPLATE_PARTIAL_SPECIALISATION_SUPPORT */

/** \brief Duplicates the multibyte C-string
 *
 * \ingroup group__library__utility
 */

inline ss_char_a_t *strdup(ss_char_a_t const* s)
{
    return stlsoft_std_ns_qual(strdup_)(s);
}

/** \brief Duplicates the wide C-string
 *
 * \ingroup group__library__utility
 */

inline ss_char_w_t *strdup(ss_char_w_t const* s)
{
    return stlsoft_std_ns_qual(strdup_)(s);
}

/* ////////////////////////////////////////////////////////////////////// */

#ifndef _STLSOFT_NO_NAMESPACE
} // namespace stlsoft
#endif /* _STLSOFT_NO_NAMESPACE */

/* ////////////////////////////////////////////////////////////////////// */

#endif /* !STLSOFT_INCL_STLSOFT_STD_HPP_CSTRING */

/* ////////////////////////////////////////////////////////////////////// */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -