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