13 #pragma managed( push, off ) 32 : m_pszBuffer(
nullptr )
64 Copy( pszString, nCount );
84 Copy( pszMbString, nCount );
89 CString::CString( std::initializer_list< wchar_t const >
const& rcInitializer ) noexcept
94 Copy( rcInitializer );
114 Move( std::move( rcInstance ) );
140 Move( std::move( rcInstance ) );
180 Copy( rcInitializer );
243 wchar_t* result = &ch;
246 if ( ( 0 > nIndex ) || (
m_nCount <= nIndex ) ) {
287 wchar_t* pNewBuffer =
new wchar_t[ nSize ];
288 if (
nullptr == pNewBuffer ) {
293 else for (
int nIndex = 0;
m_nCount > nIndex; ++nIndex ) {
299 for (
int nIndex =
m_nCount; nSize > nIndex; ++nIndex ) {
301 ::memset( &pNewBuffer[ nIndex ], 0,
sizeof(
wchar_t ) );
376 return Insert( 0, rcInstance );
386 return Insert( 0, rChar );
396 return Insert( 0, pszString );
406 return Insert( 0, pszString, nCount );
416 return Insert( 0, pszMbString );
426 return Insert( 0, pszMbString, nCount );
431 bool CString::Copy( std::initializer_list< wchar_t const >
const& rcInitializer ) noexcept {
436 return Insert( 0, rcInitializer );
454 rcInstance.m_pszBuffer =
nullptr;
455 rcInstance.m_nSize = 0;
456 rcInstance.m_nCount = 0;
510 bool CString::Append( std::initializer_list< wchar_t const >
const& rcInitializer ) noexcept {
519 return Insert( nIndex, rcInstance.m_pszBuffer, rcInstance.m_nCount );
526 return Insert( nIndex, &rChar, 1 );
536 if (
nullptr == pszString ) {
542 int nCount =
static_cast< int >( ::wcslen( pszString ) );
545 result =
Insert( nIndex, pszString, nCount );
559 if (
nullptr == pszMbString ) {
565 int nCount =
static_cast< int >( ::strlen( pszMbString ) );
568 result =
Insert( nIndex, pszMbString, nCount );
582 if (
nullptr == pszString ) {
587 else if ( ( 0 > nIndex ) || (
m_nCount < nIndex ) ) {
592 else if ( 0 > nCount ) {
608 for ( ; 0 < nMove; --nMove ) {
618 wchar_t const* pSrc = pszString;
620 for ( ; 0 < nCount; --nCount ) {
640 if (
nullptr == pszMbString ) {
646 int nCount = ::MultiByteToWideChar( CP_ACP, 0, pszMbString, -1,
nullptr, 0 );
653 int nSize = ( nCount + 1 );
654 wchar_t* pszBuffer =
new wchar_t[ nSize ];
655 if (
nullptr == pszBuffer ) {
662 if ( nCount != ::MultiByteToWideChar( CP_ACP, 0, pszMbString, -1, pszBuffer, nSize ) ) {
667 else if ( !
Insert( nIndex, pszBuffer, nCount ) ) {
686 bool CString::Insert(
int nIndex, std::initializer_list< wchar_t const >
const& rcInitializer ) noexcept {
691 for (
auto pcIter = rcInitializer.begin();; ++pcIter ) {
693 if ( rcInitializer.end() == pcIter ) {
700 if ( !
Insert( nIndex++, *pcIter ) ) {
722 return Remove( nIndex, 1 );
732 if ( ( 0 > nIndex ) || (
m_nCount <= nIndex ) ) {
737 else if ( (
m_nCount - nIndex ) < nCount ) {
743 int nMove = (
m_nCount - nIndex - nCount );
746 for ( ; 0 < nMove; --nMove, ++nIndex ) {
753 for ( ;
m_nCount > nIndex; ++nIndex ) {
755 ::memset( &
m_pszBuffer[ nIndex ], 0,
sizeof(
wchar_t ) );
776 if ( ( 0 > nIndex ) || (
m_nCount <= nIndex ) ) {
799 if ( ( 0 > nIndex ) || (
m_nCount <= nIndex ) ) {
822 for (
int nIndex = 0;
m_nCount > nIndex; ++nIndex ) {
847 return Append( pszString );
854 return Append( pszString, nCount );
861 return Append( pszMbString );
868 return Append( pszMbString, nCount );
873 bool CString::Push( std::initializer_list< wchar_t const >
const& rcInitializer ) noexcept {
875 return Append( rcInitializer );
910 if ( !
Get( 0, rChar ) ) {
932 wchar_t const* result =
nullptr;
936 va_start( vaArgs, pszFormat );
953 wchar_t const* result =
nullptr;
956 if (
nullptr == pszFormat ) {
962 int nCount = ::_vscwprintf( pszFormat, vaArgs );
977 else if ( nCount != ::vswprintf_s(
m_pszBuffer, ( nCount + 1 ), pszFormat, vaArgs ) ) {
994 #pragma managed( pop ) virtual bool Remove() noexcept
削除関数
virtual bool Insert(int nIndex, std::initializer_list< wchar_t const > const &rcInitializer) noexcept
挿入関数
virtual bool Move(CString &&rcInstance) noexcept
ムーブ関数
virtual bool Push(wchar_t const &rChar) noexcept
プッシュ関数
virtual ~CString() noexcept
デストラクタ
wchar_t * m_pszBuffer
文字列ポインタ
virtual bool Copy(CString const &rcInstance) noexcept
コピー関数
virtual bool CreateBuffer(int nSize) noexcept
バッファ作成関数
virtual bool Insert(int nIndex, CString const &rcInstance) noexcept
挿入関数
virtual bool Append(CString const &rcInstance) noexcept
追加関数
CString() noexcept
コンストラクタ
virtual bool Get(int nIndex, wchar_t &rChar) const noexcept
取得関数
virtual CString & operator+=(CString const &rcInstance) noexcept
加算代入演算子オーバーロード関数
virtual CString & operator=(CString const &rcInstance) noexcept
コピー代入演算子オーバーロード関数
virtual wchar_t const * Format(wchar_t const *pszFormat,...) noexcept
書式設定文字列代入関数
virtual bool CompactBuffer() noexcept
バッファサイズコンパクト化関数
virtual bool Set(int nIndex, wchar_t const &rChar) noexcept
設定関数
virtual bool UpdateBuffer(int nCount) noexcept
バッファサイズ更新関数
virtual bool Pop(wchar_t &rChar) noexcept
ポップ関数
virtual int GetSegmentSize() const noexcept
セグメントサイズ取得関数
virtual void Clear() noexcept
クリア関数
virtual wchar_t & operator[](int nIndex) noexcept
配列添字演算子オーバーロード関数
virtual bool PopFront(wchar_t &rChar) noexcept
ポップフロント関数
virtual int Find(wchar_t const &rChar) const noexcept
検索関数
virtual wchar_t const * FormatArgs(wchar_t const *pszFormat, va_list vaArgs) noexcept
引数リスト書式設定文字列代入関数