cstring_adaptors.hpp
来自「用STL的方式封装了WindowsAPI、COM调用、ACE、ATL、MFC、W」· HPP 代码 · 共 1,601 行 · 第 1/4 页
HPP
1,601 行
public:
CString_iadaptor(CString &str);
CString_iadaptor(CString *str);
/// @}
/// Copy assignment operator
class_type const &operator =(class_type const &rhs);
/// Copy assignment operator
class_type const &operator =(CString const &rhs);
/// Assignment operator
class_type const &operator =(LPCSTR s);
/// Assignment operator
class_type const &operator =(LPCWSTR s);
/// Assignment operator
class_type const &operator =(unsigned char const *s);
/// \name Element Access
/// @{
public:
/// Returns a mutable (non-const) reference to the element at \c index
///
/// \note The behaviour is undefined if index >= size()
reference operator [](size_type index);
/// Returns a non-mutable (const) reference to the element at \c index
///
/// \note The behaviour is undefined if index >= size()
const_reference operator [](size_type index) const;
/// @}
/// \name Implementation
/// @{
private:
friend class CString_adaptor_base<CString_iadaptor>;
CString &get_actual_string()
{
return *m_str;
}
CString const &get_actual_string() const
{
return *m_str;
}
/// @}
/// \name Members
/// @{
private:
CString *m_str;
/// @}
};
/// \brief Non-mutable Adaptor class, representing an Instance Adaptor over the MFC CString type
///
/// It can be used via the std::basic_string-like interface
class const_CString_iadaptor
: public CString_adaptor_base<const_CString_iadaptor>
{
/// \name Member Types
/// @{
private:
typedef CString_adaptor_base<const_CString_iadaptor> parent_class_type;
public:
/// The class type
typedef CString_iadaptor class_type;
/// @}
/// \name Construction
/// @{
public:
const_CString_iadaptor(CString const &str);
const_CString_iadaptor(CString const *str);
/// @}
/// \name Element Access
/// @{
public:
/// Returns a non-mutable (const) reference to the element at \c index
///
/// \note The behaviour is undefined if index >= size()
const_reference operator [](size_type index) const;
/// @}
/// \name Implementation
/// @{
private:
friend class CString_adaptor_base<const_CString_iadaptor>;
CString const &get_actual_string() const
{
return *m_str;
}
/// @}
/// \name Members
/// @{
private:
CString const *m_str;
/// @}
};
/* /////////////////////////////////////////////////////////////////////////
* Operators
*/
// operator ==
inline operator ==(CString_cadaptor const &lhs, CString_cadaptor const &rhs)
{
return lhs.get_CString() == rhs.get_CString();
}
inline operator ==(CString_cadaptor const &lhs, CString const &rhs)
{
return lhs.get_CString() == rhs;
}
inline operator ==(CString const &lhs, CString_cadaptor const &rhs)
{
return lhs == rhs.get_CString();
}
inline operator ==(CString_cadaptor const &lhs, LPCSTR rhs)
{
return lhs.get_CString() == rhs;
}
inline operator ==(LPCSTR lhs, CString_cadaptor const &rhs)
{
return lhs == rhs.get_CString();
}
inline operator ==(CString_cadaptor const &lhs, LPCWSTR rhs)
{
return lhs.get_CString() == CString(rhs);
}
inline operator ==(LPCWSTR lhs, CString_cadaptor const &rhs)
{
return CString(lhs) == rhs.get_CString();
}
inline operator ==(CString_cadaptor const &lhs, unsigned char const *rhs)
{
return lhs.get_CString() == CString(rhs);
}
inline operator ==(unsigned char const *lhs, CString_cadaptor const &rhs)
{
return CString(lhs) == rhs.get_CString();
}
inline operator ==(CString_iadaptor const &lhs, CString_iadaptor const &rhs)
{
return lhs.get_CString() == rhs.get_CString();
}
inline operator ==(CString_iadaptor const &lhs, CString const &rhs)
{
return lhs.get_CString() == rhs;
}
inline operator ==(CString const &lhs, CString_iadaptor const &rhs)
{
return lhs == rhs.get_CString();
}
inline operator ==(CString_iadaptor const &lhs, LPCSTR rhs)
{
return lhs.get_CString() == rhs;
}
inline operator ==(LPCSTR lhs, CString_iadaptor const &rhs)
{
return lhs == rhs.get_CString();
}
inline operator ==(CString_iadaptor const &lhs, LPCWSTR rhs)
{
return lhs.get_CString() == CString(rhs);
}
inline operator ==(LPCWSTR lhs, CString_iadaptor const &rhs)
{
return CString(lhs) == rhs.get_CString();
}
inline operator ==(CString_iadaptor const &lhs, unsigned char const *rhs)
{
return lhs.get_CString() == CString(rhs);
}
inline operator ==(unsigned char const *lhs, CString_iadaptor const &rhs)
{
return CString(lhs) == rhs.get_CString();
}
inline operator ==(const_CString_iadaptor const &lhs, const_CString_iadaptor const &rhs)
{
return lhs.get_CString() == rhs.get_CString();
}
inline operator ==(const_CString_iadaptor const &lhs, CString const &rhs)
{
return lhs.get_CString() == rhs;
}
inline operator ==(CString const &lhs, const_CString_iadaptor const &rhs)
{
return lhs == rhs.get_CString();
}
inline operator ==(const_CString_iadaptor const &lhs, LPCSTR rhs)
{
return lhs.get_CString() == rhs;
}
inline operator ==(LPCSTR lhs, const_CString_iadaptor const &rhs)
{
return lhs == rhs.get_CString();
}
inline operator ==(const_CString_iadaptor const &lhs, LPCWSTR rhs)
{
return lhs.get_CString() == CString(rhs);
}
inline operator ==(LPCWSTR lhs, const_CString_iadaptor const &rhs)
{
return CString(lhs) == rhs.get_CString();
}
inline operator ==(const_CString_iadaptor const &lhs, unsigned char const *rhs)
{
return lhs.get_CString() == CString(rhs);
}
inline operator ==(unsigned char const *lhs, const_CString_iadaptor const &rhs)
{
return CString(lhs) == rhs.get_CString();
}
// operator !=
inline operator !=(CString_cadaptor const &lhs, CString_cadaptor const &rhs)
{
return lhs.get_CString() != rhs.get_CString();
}
inline operator !=(CString_cadaptor const &lhs, CString const &rhs)
{
return lhs.get_CString() != rhs;
}
inline operator !=(CString const &lhs, CString_cadaptor const &rhs)
{
return lhs != rhs.get_CString();
}
inline operator !=(CString_cadaptor const &lhs, LPCSTR rhs)
{
return lhs.get_CString() != rhs;
}
inline operator !=(LPCSTR lhs, CString_cadaptor const &rhs)
{
return lhs != rhs.get_CString();
}
inline operator !=(CString_cadaptor const &lhs, LPCWSTR rhs)
{
return lhs.get_CString() != CString(rhs);
}
inline operator !=(LPCWSTR lhs, CString_cadaptor const &rhs)
{
return CString(lhs) != rhs.get_CString();
}
inline operator !=(CString_cadaptor const &lhs, unsigned char const *rhs)
{
return lhs.get_CString() != CString(rhs);
}
inline operator !=(unsigned char const *lhs, CString_cadaptor const &rhs)
{
return CString(lhs) != rhs.get_CString();
}
inline operator !=(CString_iadaptor const &lhs, CString_iadaptor const &rhs)
{
return lhs.get_CString() != rhs.get_CString();
}
inline operator !=(CString_iadaptor const &lhs, CString const &rhs)
{
return lhs.get_CString() != rhs;
}
inline operator !=(CString const &lhs, CString_iadaptor const &rhs)
{
return lhs != rhs.get_CString();
}
inline operator !=(CString_iadaptor const &lhs, LPCSTR rhs)
{
return lhs.get_CString() != rhs;
}
inline operator !=(LPCSTR lhs, CString_iadaptor const &rhs)
{
return lhs != rhs.get_CString();
}
inline operator !=(CString_iadaptor const &lhs, LPCWSTR rhs)
{
return lhs.get_CString() != CString(rhs);
}
inline operator !=(LPCWSTR lhs, CString_iadaptor const &rhs)
{
return CString(lhs) != rhs.get_CString();
}
inline operator !=(CString_iadaptor const &lhs, unsigned char const *rhs)
{
return lhs.get_CString() != CString(rhs);
}
inline operator !=(unsigned char const *lhs, CString_iadaptor const &rhs)
{
return CString(lhs) != rhs.get_CString();
}
inline operator !=(const_CString_iadaptor const &lhs, const_CString_iadaptor const &rhs)
{
return lhs.get_CString() != rhs.get_CString();
}
inline operator !=(const_CString_iadaptor const &lhs, CString const &rhs)
{
return lhs.get_CString() != rhs;
}
inline operator !=(CString const &lhs, const_CString_iadaptor const &rhs)
{
return lhs != rhs.get_CString();
}
inline operator !=(const_CString_iadaptor const &lhs, LPCSTR rhs)
{
return lhs.get_CString() != rhs;
}
inline operator !=(LPCSTR lhs, const_CString_iadaptor const &rhs)
{
return lhs != rhs.get_CString();
}
inline operator !=(const_CString_iadaptor const &lhs, LPCWSTR rhs)
{
return lhs.get_CString() != CString(rhs);
}
inline operator !=(LPCWSTR lhs, const_CString_iadaptor const &rhs)
{
return CString(lhs) != rhs.get_CString();
}
inline operator !=(const_CString_iadaptor const &lhs, unsigned char const *rhs)
{
return lhs.get_CString() != CString(rhs);
}
inline operator !=(unsigned char const *lhs, const_CString_iadaptor const &rhs)
{
return CString(lhs) != rhs.get_CString();
}
// operator <
inline operator <(CString_cadaptor const &lhs, CString_cadaptor const &rhs)
{
return lhs.get_CString() < rhs.get_CString();
}
inline operator <(CString_cadaptor const &lhs, CString const &rhs)
{
return lhs.get_CString() < rhs;
}
inline operator <(CString const &lhs, CString_cadaptor const &rhs)
{
return lhs < rhs.get_CString();
}
inline operator <(CString_cadaptor const &lhs, LPCSTR rhs)
{
return lhs.get_CString() < rhs;
}
inline operator <(LPCSTR lhs, CString_cadaptor const &rhs)
{
return lhs < rhs.get_CString();
}
inline operator <(CString_cadaptor const &lhs, LPCWSTR rhs)
{
return lhs.get_CString() < CString(rhs);
}
inline operator <(LPCWSTR lhs, CString_cadaptor const &rhs)
{
return CString(lhs) < rhs.get_CString();
}
inline operator <(CString_cadaptor const &lhs, unsigned char const *rhs)
{
return lhs.get_CString() < CString(rhs);
}
inline operator <(unsigned char const *lhs, CString_cadaptor const &rhs)
{
return CString(lhs) < rhs.get_CString();
}
inline operator <(CString_iadaptor const &lhs, CString_iadaptor const &rhs)
{
return lhs.get_CString() < rhs.get_CString();
}
inline operator <(CString_iadaptor const &lhs, CString const &rhs)
{
return lhs.get_CString() < rhs;
}
inline operator <(CString const &lhs, CString_iadaptor const &rhs)
{
return lhs < rhs.get_CString();
}
inline operator <(CString_iadaptor const &lhs, LPCSTR rhs)
{
return lhs.get_CString() < rhs;
}
inline operator <(LPCSTR lhs, CString_iadaptor const &rhs)
{
return lhs < rhs.get_CString();
}
inline operator <(CString_iadaptor const &lhs, LPCWSTR rhs)
{
return lhs.get_CString() < CString(rhs);
}
inline operator <(LPCWSTR lhs, CString_iadaptor const &rhs)
{
return CString(lhs) < rhs.get_CString();
}
inline operator <(CString_iadaptor const &lhs, unsigned char const *rhs)
{
return lhs.get_CString() < CString(rhs);
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?