CStrings
を使用して宣言されたコードが異なるように見えるのはなぜですか。
一部はこの形式を使用します
char a_c_string [];
他の人が使用している間
CString another_c_string;
違いはありますか? CStrings
で見つけたすべての参照は、最初の例で行ったように宣言します。他の方法で人々が例を挙げているフォーラムなどで見ただけです。
CString
は、C型でもC++型でもありません。 Microsoftの発明のようです これは本質的にstd::string
の代替です:
CString
オブジェクトは、連結操作の結果として成長する可能性があります。CString
オブジェクトは「値のセマンティクス」に従います。CString
オブジェクトは、文字列へのポインターとしてではなく、実際の文字列として考えてください。const char*
およびCString
関数の引数をLPCTSTR
オブジェクトに自由に置き換えることができます。- 変換演算子は、読み取り専用の文字配列(Cスタイルの文字列)として文字列の文字に直接アクセスします。
無視することをお勧めします:
(a)人々はあなたが話していることを知っています。
(b)コードは移植可能です。
(c)C++を書いているので、誰もが世界中で受け入れられているISO C++標準に従って合理化することができます。 ある会社のオフィスの部屋にいる数人の男)。
Microsoft Visual C++でプログラミングしている場合にのみ利用できますが、これは実質的に制限されています。
混乱の原因になっている場合に備えて、「CString」の「C」は、MFCのすべてのクラスが持つプレフィックスにすぎません。 MFCは、Microsoftがwin32 APIをラップするC++ライブラリです。この文字列クラスは、C言語が提供する文字列処理機能を記述するために使用される「C文字列」とはほとんど関係がありません。 C言語は、文字列を表すchar配列へのポインタを操作する文字列処理用の関数のみを提供し、最後の文字がNUL(別名NUL終了またはゼロ終了)であることを要求します。 C++自体にも文字列クラスstd::string
があることに注意してください(実際、std :: wstringとstd :: basic_stringテンプレートもありますが、初心者としては安全に無視できます)。