Solution46
CString.h
[詳解]
1 //=============================================================================
2 /// @file
3 /// 文字列クラスヘッダファイル
4 ///
5 /// 文字列クラスヘッダファイルです。
6 ///
7 /// $Id: CString.h 245 2019-03-20 15:03:41Z admin $
8 /// $Date: 2019-03-21 00:03:41 +0900 (2019/03/21 (木)) $
9 /// $Author: admin $
10 ///
11 /// @attention なし
12 
13 #pragma once
14 #pragma managed( push, off )
15 
16 //=============================================================================
17 // インクルードファイル
18 #include <LibCommonDef.h>
19 #include <initializer_list>
20 
21 //=============================================================================
22 // 共通ライブラリ名前空間
23 namespace LibCommon {
24  //=========================================================================
25  /// 文字列クラス
26  ///
27  /// 文字列クラスです。
28  ///
29  /// @attention なし
30  ///
32  //=====================================================================
33  // 構築子と解体子
34  public:
35  //---------------------------------------------------------------------
36  /// コンストラクタ
37  ///
38  /// コンストラクタです。
39  ///
40  /// @param なし
41  /// @return なし
42  /// @attention なし
43  ///
44  explicit CString() noexcept;
45 
46  //---------------------------------------------------------------------
47  /// コンストラクタ
48  ///
49  /// コンストラクタです。
50  ///
51  /// @param[in] rChar 文字コード参照
52  /// @return なし
53  /// @attention なし
54  ///
55  explicit CString( wchar_t const& rChar ) noexcept;
56 
57  //---------------------------------------------------------------------
58  /// コンストラクタ
59  ///
60  /// コンストラクタです。
61  ///
62  /// @param[in] pszString 文字列ポインタ
63  /// @return なし
64  /// @attention なし
65  ///
66  explicit CString( wchar_t const* pszString ) noexcept;
67 
68  //---------------------------------------------------------------------
69  /// コンストラクタ
70  ///
71  /// コンストラクタです。
72  ///
73  /// @param[in] pszString 文字列ポインタ
74  /// @param[in] nCount 文字数
75  /// @return なし
76  /// @attention なし
77  ///
78  explicit CString( wchar_t const* pszString, int nCount ) noexcept;
79 
80  //---------------------------------------------------------------------
81  /// コンストラクタ
82  ///
83  /// コンストラクタです。
84  ///
85  /// @param[in] pszMbString マルチバイト文字列ポインタ
86  /// @return なし
87  /// @attention なし
88  ///
89  explicit CString( char const* pszMbString ) noexcept;
90 
91  //---------------------------------------------------------------------
92  /// コンストラクタ
93  ///
94  /// コンストラクタです。
95  ///
96  /// @param[in] pszMbString マルチバイト文字列ポインタ
97  /// @param[in] nCount 文字数
98  /// @return なし
99  /// @attention なし
100  ///
101  explicit CString( char const* pszMbString, int nCount ) noexcept;
102 
103  //---------------------------------------------------------------------
104  /// コンストラクタ
105  ///
106  /// コンストラクタです。
107  ///
108  /// @param[in] rcInitializer 文字コード初期化子リスト参照
109  /// @return なし
110  /// @attention なし
111  ///
112  explicit CString( std::initializer_list< wchar_t const > const& rcInitializer ) noexcept;
113 
114  //---------------------------------------------------------------------
115  /// コピーコンストラクタ
116  ///
117  /// コピーコンストラクタです。
118  ///
119  /// @param[in] rcInstance インスタンス参照
120  /// @return なし
121  /// @attention なし
122  ///
123  explicit CString( CString const& rcInstance ) noexcept;
124 
125  //---------------------------------------------------------------------
126  /// ムーブコンストラクタ
127  ///
128  /// ムーブコンストラクタです。
129  ///
130  /// @param[in] rcInstance インスタンス左辺値参照
131  /// @return なし
132  /// @attention なし
133  ///
134  explicit CString( CString&& rcInstance ) noexcept;
135 
136  //---------------------------------------------------------------------
137  /// デストラクタ
138  ///
139  /// デストラクタです。
140  ///
141  /// @param なし
142  /// @return なし
143  /// @attention なし
144  ///
145  virtual ~CString() noexcept;
146 
147  //=====================================================================
148  // インライン公開関数
149  public:
150  //---------------------------------------------------------------------
151  /// 文字列バッファ取得関数
152  ///
153  /// 文字列バッファ取得関数です。
154  ///
155  /// @param なし
156  /// @return 文字列ポインタ
157  /// @attention なし
158  ///
159  inline virtual wchar_t const* GetBuffer() const noexcept { return m_pszBuffer; }
160 
161  //---------------------------------------------------------------------
162  /// バッファサイズ取得関数
163  ///
164  /// バッファサイズ取得関数です。
165  ///
166  /// @param なし
167  /// @return バッファサイズ
168  /// @attention なし
169  ///
170  inline virtual int GetSize() const noexcept { return m_nSize; }
171 
172  //---------------------------------------------------------------------
173  /// 文字数取得関数
174  ///
175  /// 文字数取得関数です。
176  ///
177  /// @param なし
178  /// @return 文字数
179  /// @attention なし
180  ///
181  inline virtual int GetCount() const noexcept { return m_nCount; }
182 
183  //---------------------------------------------------------------------
184  /// セグメントサイズ取得関数
185  ///
186  /// セグメントサイズ取得関数です。
187  ///
188  /// @param なし
189  /// @return セグメントサイズ
190  /// @attention なし
191  ///
192  inline virtual int GetSegmentSize() const noexcept { return SEGMENT_SIZE; }
193 
194  //=====================================================================
195  // 公開演算子オーバーロード関数
196  public:
197  //---------------------------------------------------------------------
198  /// コピー代入演算子オーバーロード関数
199  ///
200  /// コピー代入演算子オーバーロード関数です。
201  ///
202  /// @param[in] rcInstance インスタンス参照
203  /// @return インスタンス参照
204  /// @attention なし
205  ///
206  virtual CString& operator=( CString const& rcInstance ) noexcept;
207 
208  //---------------------------------------------------------------------
209  /// ムーブ代入演算子オーバーロード関数
210  ///
211  /// ムーブ代入演算子オーバーロード関数です。
212  ///
213  /// @param[in] rcInstance インスタンス左辺値参照
214  /// @return インスタンス参照
215  /// @attention なし
216  ///
217  virtual CString& operator=( CString&& rcInstance ) noexcept;
218 
219  //---------------------------------------------------------------------
220  /// 代入演算子オーバーロード関数
221  ///
222  /// 代入演算子オーバーロード関数です。
223  ///
224  /// @param[in] rChar 文字コード参照
225  /// @return インスタンス参照
226  /// @attention なし
227  ///
228  virtual CString& operator=( wchar_t const& rChar ) noexcept;
229 
230  //---------------------------------------------------------------------
231  /// 代入演算子オーバーロード関数
232  ///
233  /// 代入演算子オーバーロード関数です。
234  ///
235  /// @param[in] pszString 文字列ポインタ
236  /// @return インスタンス参照
237  /// @attention なし
238  ///
239  virtual CString& operator=( wchar_t const* pszString ) noexcept;
240 
241  //---------------------------------------------------------------------
242  /// 代入演算子オーバーロード関数
243  ///
244  /// 代入演算子オーバーロード関数です。
245  ///
246  /// @param[in] pszMbString マルチバイト文字列ポインタ
247  /// @return インスタンス参照
248  /// @attention なし
249  ///
250  virtual CString& operator=( char const* pszMbString ) noexcept;
251 
252  //---------------------------------------------------------------------
253  /// 代入演算子オーバーロード関数
254  ///
255  /// 代入演算子オーバーロード関数です。
256  ///
257  /// @param[in] rcInitializer 文字コード初期化子リスト参照
258  /// @attention なし
259  ///
260  virtual CString& operator=( std::initializer_list< wchar_t const > const& rcInitializer ) noexcept;
261 
262  //---------------------------------------------------------------------
263  /// 加算代入演算子オーバーロード関数
264  ///
265  /// 加算代入演算子オーバーロード関数です。
266  ///
267  /// @param[in] rcInstance インスタンス参照
268  /// @return インスタンス参照
269  /// @attention なし
270  ///
271  virtual CString& operator+=( CString const& rcInstance ) noexcept;
272 
273  //---------------------------------------------------------------------
274  /// 加算代入演算子オーバーロード関数
275  ///
276  /// 加算代入演算子オーバーロード関数です。
277  ///
278  /// @param[in] rChar 文字コード参照
279  /// @return インスタンス参照
280  /// @attention なし
281  ///
282  virtual CString& operator+=( wchar_t const& rChar ) noexcept;
283 
284  //---------------------------------------------------------------------
285  /// 加算代入演算子オーバーロード関数
286  ///
287  /// 加算代入演算子オーバーロード関数です。
288  ///
289  /// @param[in] pszString 文字列ポインタ
290  /// @return インスタンス参照
291  /// @attention なし
292  ///
293  virtual CString& operator+=( wchar_t const* pszString ) noexcept;
294 
295  //---------------------------------------------------------------------
296  /// 加算代入演算子オーバーロード関数
297  ///
298  /// 加算代入演算子オーバーロード関数です。
299  ///
300  /// @param[in] pszMbString マルチバイト文字列ポインタ
301  /// @return インスタンス参照
302  /// @attention なし
303  ///
304  virtual CString& operator+=( char const* pszMbString ) noexcept;
305 
306  //---------------------------------------------------------------------
307  /// 加算代入演算子オーバーロード関数
308  ///
309  /// 加算代入演算子オーバーロード関数です。
310  ///
311  /// @param[in] rcInitializer 文字コード初期化子リスト参照
312  /// @return インスタンス参照
313  /// @attention なし
314  ///
315  virtual CString& operator+=( std::initializer_list< wchar_t const > const& rcInitializer ) noexcept;
316 
317  //---------------------------------------------------------------------
318  /// 配列添字演算子オーバーロード関数
319  ///
320  /// 配列添字演算子オーバーロード関数です。
321  ///
322  /// @param[in] nIndex インデックス
323  /// @return 文字コード参照
324  /// @attention なし
325  ///
326  virtual wchar_t& operator[]( int nIndex ) noexcept;
327 
328  //---------------------------------------------------------------------
329  /// 文字列ポインタキャスト演算子オーバーロード関数
330  ///
331  /// 文字列ポインタキャスト演算子オーバーロード関数です。
332  ///
333  /// @param なし
334  /// @return 文字列ポインタ
335  /// @attention なし
336  ///
337  virtual operator wchar_t const*() noexcept { return m_pszBuffer; }
338 
339  //---------------------------------------------------------------------
340  /// 関数演算子オーバーロード関数
341  ///
342  /// 関数演算子オーバーロード関数です。
343  ///
344  /// @param なし
345  /// @return インスタンス参照
346  /// @attention なし
347  ///
348  virtual CString& operator()() noexcept { return *this; }
349 
350  //=====================================================================
351  // 公開関数
352  public:
353  //---------------------------------------------------------------------
354  /// クリア関数
355  ///
356  /// クリア関数です。
357  ///
358  /// @param なし
359  /// @return なし
360  /// @attention なし
361  ///
362  virtual void Clear() noexcept;
363 
364  //---------------------------------------------------------------------
365  /// バッファ作成関数
366  ///
367  /// バッファ作成関数です。
368  ///
369  /// @param[in] nSize バッファサイズ
370  /// @return 実行結果
371  /// - true 成功
372  /// - false 失敗
373  /// @attention なし
374  ///
375  virtual bool CreateBuffer( int nSize ) noexcept;
376 
377  //---------------------------------------------------------------------
378  /// バッファサイズ更新関数
379  ///
380  /// バッファサイズ更新関数です。
381  ///
382  /// @param[in] nCount 文字数
383  /// @return 実行結果
384  /// - true 成功
385  /// - false 失敗
386  /// @attention なし
387  ///
388  virtual bool UpdateBuffer( int nCount ) noexcept;
389 
390  //---------------------------------------------------------------------
391  /// バッファサイズコンパクト化関数
392  ///
393  /// バッファサイズコンパクト化関数です。
394  ///
395  /// @param なし
396  /// @return 実行結果
397  /// - true 成功
398  /// - false 失敗
399  /// @attention なし
400  ///
401  virtual bool CompactBuffer() noexcept;
402 
403  //---------------------------------------------------------------------
404  /// コピー関数
405  ///
406  /// コピー関数です。
407  ///
408  /// @param[in] rcInstance インスタンス参照
409  /// @return 実行結果
410  /// - true 成功
411  /// - false 失敗
412  /// @attention なし
413  ///
414  virtual bool Copy( CString const& rcInstance ) noexcept;
415 
416  //---------------------------------------------------------------------
417  /// コピー関数
418  ///
419  /// コピー関数です。
420  ///
421  /// @param[in] rChar 文字コード参照
422  /// @return 実行結果
423  /// - true 成功
424  /// - false 失敗
425  /// @attention なし
426  ///
427  virtual bool Copy( wchar_t const& rChar ) noexcept;
428 
429  //---------------------------------------------------------------------
430  /// コピー関数
431  ///
432  /// コピー関数です。
433  ///
434  /// @param[in] pszString 文字列ポインタ
435  /// @return 実行結果
436  /// - true 成功
437  /// - false 失敗
438  /// @attention なし
439  ///
440  virtual bool Copy( wchar_t const* pszString ) noexcept;
441 
442  //---------------------------------------------------------------------
443  /// コピー関数
444  ///
445  /// コピー関数です。
446  ///
447  /// @param[in] pszString 文字列ポインタ
448  /// @param[in] nCount 文字数
449  /// @return 実行結果
450  /// - true 成功
451  /// - false 失敗
452  /// @attention なし
453  ///
454  virtual bool Copy( wchar_t const* pszString, int nCount ) noexcept;
455 
456  //---------------------------------------------------------------------
457  /// コピー関数
458  ///
459  /// コピー関数です。
460  ///
461  /// @param[in] pszMbString マルチバイト文字列ポインタ
462  /// @return 実行結果
463  /// - true 成功
464  /// - false 失敗
465  /// @attention なし
466  ///
467  virtual bool Copy( char const* pszMbString ) noexcept;
468 
469  //---------------------------------------------------------------------
470  /// コピー関数
471  ///
472  /// コピー関数です。
473  ///
474  /// @param[in] pszMbString マルチバイト文字列ポインタ
475  /// @param[in] nCount 文字数
476  /// @return 実行結果
477  /// - true 成功
478  /// - false 失敗
479  /// @attention なし
480  ///
481  virtual bool Copy( char const* pszMbString, int nCount ) noexcept;
482 
483  //---------------------------------------------------------------------
484  /// コピー関数
485  ///
486  /// コピー関数です。
487  ///
488  /// @param[in] rcInitializer 文字コード初期化子リスト参照
489  /// @return 実行結果
490  /// - true 成功
491  /// - false 失敗
492  /// @attention なし
493  ///
494  virtual bool Copy( std::initializer_list< wchar_t const > const& rcInitializer ) noexcept;
495 
496  //---------------------------------------------------------------------
497  /// ムーブ関数
498  ///
499  /// ムーブ関数です。
500  ///
501  /// @param[in] rcInstance インスタンス左辺値参照
502  /// @return 実行結果
503  /// - true 成功
504  /// - false 失敗
505  /// @attention なし
506  ///
507  virtual bool Move( CString&& rcInstance ) noexcept;
508 
509  //---------------------------------------------------------------------
510  /// 追加関数
511  ///
512  /// 追加関数です。
513  ///
514  /// @param[in] rcInstance インスタンス参照
515  /// @return 実行結果
516  /// - true 成功
517  /// - false 失敗
518  /// @attention なし
519  ///
520  virtual bool Append( CString const& rcInstance ) noexcept;
521 
522  //---------------------------------------------------------------------
523  /// 追加関数
524  ///
525  /// 追加関数です。
526  ///
527  /// @param[in] rChar 文字コード参照
528  /// @return 実行結果
529  /// - true 成功
530  /// - false 失敗
531  /// @attention なし
532  ///
533  virtual bool Append( wchar_t const& rChar ) noexcept;
534 
535  //---------------------------------------------------------------------
536  /// 追加関数
537  ///
538  /// 追加関数です。
539  ///
540  /// @param[in] pszString 文字列ポインタ
541  /// @return 実行結果
542  /// - true 成功
543  /// - false 失敗
544  /// @attention なし
545  ///
546  virtual bool Append( wchar_t const* pszString ) noexcept;
547 
548  //---------------------------------------------------------------------
549  /// 追加関数
550  ///
551  /// 追加関数です。
552  ///
553  /// @param[in] pszString 文字列ポインタ
554  /// @param[in] nCount 文字数
555  /// @return 実行結果
556  /// - true 成功
557  /// - false 失敗
558  /// @attention なし
559  ///
560  virtual bool Append( wchar_t const* pszString, int nCount ) noexcept;
561 
562  //---------------------------------------------------------------------
563  /// 追加関数
564  ///
565  /// 追加関数です。
566  ///
567  /// @param[in] pszMbString マルチバイト文字列ポインタ
568  /// @return 実行結果
569  /// - true 成功
570  /// - false 失敗
571  /// @attention なし
572  ///
573  virtual bool Append( char const* pszMbString ) noexcept;
574 
575  //---------------------------------------------------------------------
576  /// 追加関数
577  ///
578  /// 追加関数です。
579  ///
580  /// @param[in] pszMbString マルチバイト文字列ポインタ
581  /// @param[in] nCount 文字数
582  /// @return 実行結果
583  /// - true 成功
584  /// - false 失敗
585  /// @attention なし
586  ///
587  virtual bool Append( char const* pszMbString, int nCount ) noexcept;
588 
589  //---------------------------------------------------------------------
590  /// 追加関数
591  ///
592  /// 追加関数です。
593  ///
594  /// @param[in] rcInitializer 文字コード初期化子リスト参照
595  /// @return 実行結果
596  /// - true 成功
597  /// - false 失敗
598  /// @attention なし
599  ///
600  virtual bool Append( std::initializer_list< wchar_t const > const& rcInitializer ) noexcept;
601 
602  //---------------------------------------------------------------------
603  /// 挿入関数
604  ///
605  /// 挿入関数です。
606  ///
607  /// @param[in] nIndex インデックス
608  /// @param[in] rcInstance インスタンス参照
609  /// @return 実行結果
610  /// - true 成功
611  /// - false 失敗
612  /// @attention なし
613  ///
614  virtual bool Insert( int nIndex, CString const& rcInstance ) noexcept;
615 
616  //---------------------------------------------------------------------
617  /// 挿入関数
618  ///
619  /// 挿入関数です。
620  ///
621  /// @param[in] nIndex インデックス
622  /// @param[in] rChar 文字コード参照
623  /// @return 実行結果
624  /// - true 成功
625  /// - false 失敗
626  /// @attention なし
627  ///
628  virtual bool Insert( int nIndex, wchar_t const& rChar ) noexcept;
629 
630  //---------------------------------------------------------------------
631  /// 挿入関数
632  ///
633  /// 挿入関数です。
634  ///
635  /// @param[in] nIndex インデックス
636  /// @param[in] pszString 文字列ポインタ
637  /// @return 実行結果
638  /// - true 成功
639  /// - false 失敗
640  /// @attention なし
641  ///
642  virtual bool Insert( int nIndex, wchar_t const* pszString ) noexcept;
643 
644  //---------------------------------------------------------------------
645  /// 挿入関数
646  ///
647  /// 挿入関数です。
648  ///
649  /// @param[in] nIndex インデックス
650  /// @param[in] pszString 文字列ポインタ
651  /// @param[in] nCount 文字数
652  /// @return 実行結果
653  /// - true 成功
654  /// - false 失敗
655  /// @attention なし
656  ///
657  virtual bool Insert( int nIndex, wchar_t const* pszString, int nCount ) noexcept;
658 
659  //---------------------------------------------------------------------
660  /// 挿入関数
661  ///
662  /// 挿入関数です。
663  ///
664  /// @param[in] nIndex インデックス
665  /// @param[in] pszMbString マルチバイト文字列ポインタ
666  /// @return 実行結果
667  /// - true 成功
668  /// - false 失敗
669  /// @attention なし
670  ///
671  virtual bool Insert( int nIndex, char const* pszMbString ) noexcept;
672 
673  //---------------------------------------------------------------------
674  /// 挿入関数
675  ///
676  /// 挿入関数です。
677  ///
678  /// @param[in] nIndex インデックス
679  /// @param[in] pszMbString マルチバイト文字列ポインタ
680  /// @param[in] nCount 文字数
681  /// @return 実行結果
682  /// - true 成功
683  /// - false 失敗
684  /// @attention なし
685  ///
686  virtual bool Insert( int nIndex, char const* pszMbString, int nCount ) noexcept;
687 
688  //---------------------------------------------------------------------
689  /// 挿入関数
690  ///
691  /// 挿入関数です。
692  ///
693  /// @param[in] nIndex インデックス
694  /// @param[in] rcInitializer 文字コード初期化子リスト参照
695  /// @return 実行結果
696  /// - true 成功
697  /// - false 失敗
698  /// @attention なし
699  ///
700  virtual bool Insert( int nIndex, std::initializer_list< wchar_t const > const& rcInitializer ) noexcept;
701 
702  //---------------------------------------------------------------------
703  /// 削除関数
704  ///
705  /// 削除関数です。
706  ///
707  /// @param なし
708  /// @return 実行結果
709  /// - true 成功
710  /// - false 失敗
711  /// @attention なし
712  ///
713  virtual bool Remove() noexcept;
714 
715  //---------------------------------------------------------------------
716  /// 削除関数
717  ///
718  /// 削除関数です。
719  ///
720  /// @param[in] nIndex インデックス
721  /// @return 実行結果
722  /// - true 成功
723  /// - false 失敗
724  /// @attention なし
725  ///
726  virtual bool Remove( int nIndex ) noexcept;
727 
728  //---------------------------------------------------------------------
729  /// 削除関数
730  ///
731  /// 削除関数です。
732  ///
733  /// @param[in] nIndex インデックス
734  /// @param[in] nCount 文字数
735  /// @return 実行結果
736  /// - true 成功
737  /// - false 失敗
738  /// @attention なし
739  ///
740  virtual bool Remove( int nIndex, int nCount ) noexcept;
741 
742  //---------------------------------------------------------------------
743  /// 取得関数
744  ///
745  /// 取得関数です。
746  ///
747  /// @param[in] nIndex インデックス
748  /// @param[in] rChar 文字コード参照
749  /// @return 実行結果
750  /// - true 成功
751  /// - false 失敗
752  /// @attention なし
753  ///
754  virtual bool Get( int nIndex, wchar_t& rChar ) const noexcept;
755 
756  //---------------------------------------------------------------------
757  /// 設定関数
758  ///
759  /// 設定関数です。
760  ///
761  /// @param[in] nIndex インデックス
762  /// @param[in] rChar 文字コード参照
763  /// @return 実行結果
764  /// - true 成功
765  /// - false 失敗
766  /// @attention なし
767  ///
768  virtual bool Set( int nIndex, wchar_t const& rChar ) noexcept;
769 
770  //---------------------------------------------------------------------
771  /// 検索関数
772  ///
773  /// 検索関数です。
774  ///
775  /// @param[in] rChar 文字コード参照
776  /// @return インデックス
777  /// - 0 以上 成功
778  /// - 0 未満 失敗
779  /// @attention なし
780  ///
781  virtual int Find( wchar_t const& rChar ) const noexcept;
782 
783  //---------------------------------------------------------------------
784  /// プッシュ関数
785  ///
786  /// プッシュ関数です。
787  ///
788  /// @param[in] rChar 文字コード参照
789  /// @return 実行結果
790  /// - true 成功
791  /// - false 失敗
792  /// @attention なし
793  ///
794  virtual bool Push( wchar_t const& rChar ) noexcept;
795 
796  //---------------------------------------------------------------------
797  /// プッシュ関数
798  ///
799  /// プッシュ関数です。
800  ///
801  /// @param[in] pszString 文字列ポインタ
802  /// @return 実行結果
803  /// - true 成功
804  /// - false 失敗
805  /// @attention なし
806  ///
807  virtual bool Push( wchar_t const* pszString ) noexcept;
808 
809  //---------------------------------------------------------------------
810  /// プッシュ関数
811  ///
812  /// プッシュ関数です。
813  ///
814  /// @param[in] pszString 文字列ポインタ
815  /// @param[in] nCount 文字数
816  /// @return 実行結果
817  /// - true 成功
818  /// - false 失敗
819  /// @attention なし
820  ///
821  virtual bool Push( wchar_t const* pszString, int nCount ) noexcept;
822 
823  //---------------------------------------------------------------------
824  /// プッシュ関数
825  ///
826  /// プッシュ関数です。
827  ///
828  /// @param[in] pszMbString マルチバイト文字列ポインタ
829  /// @return 実行結果
830  /// - true 成功
831  /// - false 失敗
832  /// @attention なし
833  ///
834  virtual bool Push( char const* pszMbString ) noexcept;
835 
836  //---------------------------------------------------------------------
837  /// プッシュ関数
838  ///
839  /// プッシュ関数です。
840  ///
841  /// @param[in] pszMbString マルチバイト文字列ポインタ
842  /// @param[in] nCount 文字数
843  /// @return 実行結果
844  /// - true 成功
845  /// - false 失敗
846  /// @attention なし
847  ///
848  virtual bool Push( char const* pszMbString, int nCount ) noexcept;
849 
850  //---------------------------------------------------------------------
851  /// プッシュ関数
852  ///
853  /// プッシュ関数です。
854  ///
855  /// @param[in] rcInitializer 文字コード初期化子リスト参照
856  /// @return 実行結果
857  /// - true 成功
858  /// - false 失敗
859  /// @attention なし
860  ///
861  virtual bool Push( std::initializer_list< wchar_t const > const& rcInitializer ) noexcept;
862 
863  //---------------------------------------------------------------------
864  /// ポップ関数
865  ///
866  /// ポップ関数です。
867  ///
868  /// @param[in] rChar 文字コード参照
869  /// @return 実行結果
870  /// - true 成功
871  /// - false 失敗
872  /// @attention なし
873  ///
874  virtual bool Pop( wchar_t& rChar ) noexcept;
875 
876  //---------------------------------------------------------------------
877  /// ポップフロント関数
878  ///
879  /// ポップフロント関数です。
880  ///
881  /// @param[in] rChar 文字コード参照
882  /// @return 実行結果
883  /// - true 成功
884  /// - false 失敗
885  /// @attention なし
886  ///
887  virtual bool PopFront( wchar_t& rChar ) noexcept;
888 
889  //---------------------------------------------------------------------
890  /// 書式設定文字列代入関数
891  ///
892  /// 書式設定文字列代入関数です。
893  ///
894  /// @param[in] pszFormat 書式設定文字列ポインタ
895  /// @param[in] ... 可変長引数リスト
896  /// @return 文字列ポインタ
897  /// @attention なし
898  ///
899  virtual wchar_t const* Format( wchar_t const* pszFormat, ... ) noexcept;
900 
901  //---------------------------------------------------------------------
902  /// 引数リスト書式設定文字列代入関数
903  ///
904  /// 引数リスト書式設定文字列代入関数です。
905  ///
906  /// @param[in] pszFormat 書式設定文字列ポインタ
907  /// @param[in] vaArgs 引数リスト
908  /// @return 文字列ポインタ
909  /// @attention なし
910  ///
911  virtual wchar_t const* FormatArgs( wchar_t const* pszFormat, va_list vaArgs ) noexcept;
912 
913  //=====================================================================
914  // 限定公開変数
915  protected:
916  wchar_t* m_pszBuffer; ///< 文字列ポインタ
917  int m_nSize; ///< バッファサイズ
918  int m_nCount; ///< 要素数
919 
920  //=====================================================================
921  // 静的公開定数
922  public:
923  static int const SEGMENT_SIZE = 256; ///< セグメントサイズ初期値
924  };
925 }
926 
927 #pragma managed( pop )
wchar_t * m_pszBuffer
文字列ポインタ
Definition: CString.h:916
共通ライブラリ定義ヘッダファイル
virtual int GetCount() const noexcept
文字数取得関数
Definition: CString.h:181
共通ライブラリ名前空間
Definition: CArray.h:23
virtual CString & operator()() noexcept
関数演算子オーバーロード関数
Definition: CString.h:348
文字列クラス
Definition: CString.h:31
virtual int GetSegmentSize() const noexcept
セグメントサイズ取得関数
Definition: CString.h:192
virtual int GetSize() const noexcept
バッファサイズ取得関数
Definition: CString.h:170
int m_nSize
バッファサイズ
Definition: CString.h:917
#define LIB_COMMON_API
ダイナミックライブラリインポート宣言
Definition: LibCommonDef.h:44
int m_nCount
要素数
Definition: CString.h:918
virtual wchar_t const * GetBuffer() const noexcept
文字列バッファ取得関数
Definition: CString.h:159