TNB Library
TnbFixedBufferStr.h
[詳解]
1#pragma once
13#include "TnbStr.h"
14
15
16
17//TNB Library
18namespace TNB
19{
20
21
22
38template<int LEN, char PADDING = 0>
40{
41public:
42
44 enum
45 {
47 PADDING_CHAR = PADDING
48 };
49
52 {
53 Empty();
54 }
55
60 CFixedBufferStrT(LPCSTR lpsz)
61 {
62 Set(lpsz);
63 }
64
71 {
72 Set(other.Get());
73 return *this;
74 }
75
82 {
83 Set(lpsz);
84 return *this;
85 }
86
92 void Set(LPCSTR lpsz)
93 {
94 CAscii s;
95 s.SetFromLeft(lpsz, LEN);
96 ASSERT( s.GetLength() <= LEN );
97 Empty();
98 memcpy(m_dat, s, s.GetLength());
99 }
100
105 void Empty(void)
106 {
107 loop ( i, LEN )
108 {
109 m_dat[i] = PADDING_CHAR;
110 }
111 }
112
116 CAscii Get(void) const
117 {
118 CAscii s;
119 s.SetFromLeft(m_dat, LEN);
120 return s;
121 }
122
128 LPCSTR Refer(void) const
129 {
130 return m_dat;
131 }
132
137 size_t GetLength(void) const
138 {
139 CAscii s;
140 s.SetFromLeft(m_dat, LEN);
141 return s.GetLength();
142 }
143
149 size_t GetMaximumLength(void) const
150 {
151 return LEN;
152 }
153
154private:
155 char m_dat[LEN];
156};
157
158
159
160}; // TNB
#define loop(VAR, CNT)
loop構文.
Definition: TnbDef.h:343
文字列管理関係のヘッダ
固定バッファ文字列管理テンプレート
LPCSTR Refer(void) const
[参照] 文字列先頭参照.
CFixedBufferStrT(LPCSTR lpsz)
代入コンストラクタ.
CFixedBufferStrT(void)
コンストラクタ.
@ PADDING_CHAR
パディング文字
@ MAXIMUM_LENGTH
バッファ長
size_t GetLength(void) const
[取得] 文字列長.
CAscii Get(void) const
[取得] 文字列取得.
size_t GetMaximumLength(void) const
[取得] 最大文字列長.
void Set(LPCSTR lpsz)
[代入] 文字列代入.
void Empty(void)
[設定] 空化.
CFixedBufferStrT & operator=(LPCSTR lpsz)
代入オペレータ
CFixedBufferStrT & operator=(const CFixedBufferStrT &other)
代入オペレータ
size_t GetLength(void) const
[取得] 文字列長
Definition: TnbStr.h:518
CStrT & SetFromLeft(const TYP *lpText, size_t iLen)
[代入] 文字数制限代入.
Definition: TnbStr.h:278
TNB Library
Definition: TnbDoxyTitle.txt:2