3

誰かが char * と CString の違いと関係を説明できますか?... ありがとう。

4

7 に答える 7

2

重要な違いはほとんどありません。

char *へのポインタcharです。一般に、それが単一の文字なのか、文字列の先頭なのか、そして長さはどれくらいかはわかりません。const char *これらはすべて、プログラムロジックと、入力として使用するようないくつかの規則、つまり標準のC関数によって決定されます。文字列に割り当てられたメモリを手動で管理する必要があります。

CStringマクロです。CStringAプログラムのコンパイルオプションに応じて、またはCStringWクラスのいずれかに定義できます。相違点と類似点があります。

違いは、CStringA非Unicodeデータ(に類似char*)で動作しCStringW、Unicode文字列(に類似wchar_t*)であるということです。

ただし、両方のクラスは、文字列操作とストレージ管理の点で同等です。std::stringそれらは標準のC++とstd::wstringクラスに近いです。

それとは別に、とは両方とも、文字列をUnicode形式との間で変換する機能を提供しますCStringACStringW

于 2013-03-13T10:33:21.580 に答える
2

CString はの配列にcharなり、aは文字列の文字を反復処理できる char*配列へのポインターになります。char

実際にはMSDNから:

CStringTCHARデータ型に基づいています。シンボル_UNICODEがプログラム用に定義されている場合は、16 ビット文字型の typeTCHARとして定義されます。wchar_tそれ以外の場合は、通常の 8 ビット文字型である char として定義されます。Unicode では、CStringオブジェクトは 16 ビット文字で構成されます。Unicode がなければ、8 ビットの char 型で構成されます。

于 2013-03-13T10:27:23.413 に答える
1

CString は、char* ではなく、TCHAR のシーケンスです。主な違いは、UNICODE が定義されている場合、CString は wchar のシーケンスになることです。実際には、そのマクロに応じて、CString は CStringA または CStringW のいずれかに tpyedef されます。もう 1 つの大きな違いは、CString がクラスであるのに対し、char* は単に文字へのポインターであることです。

于 2013-03-13T10:27:39.167 に答える
1

TCHAR のタイプに応じて、CString は CStringA または CStringW のいずれかになります。

つまりCString、文字配列のラッパーであり、その文字配列を文字列として簡単に扱い、文字列型に関連する方法で操作できるようにします。

それらの関係について、簡単に説明すると次のようになります。次のように char * と CString の間で変換できます。

CString str = "abc"; // const char[3] or char * to CString

const char * p = str.Get()// CString から const char へ *

于 2013-03-13T10:29:11.827 に答える
1

CString は、さまざまな機能が詰め込まれたクラスです.. MSDN

char * は通常の C++ データ型です。

CString は、主に MFC アプリケーションで使用されます。

于 2013-03-13T10:41:40.380 に答える
1

ACStringはクラスであり、A にはない多くの機能を提供しますchar *。Achar *は単なる char または chars 配列へのポインタです。

CString には、 char * とほぼ同じバッファが含まれています。LPTSTR GetBuffer( int nMinBufLength );

LPTSTRchar *go herehereの違いについて

于 2013-03-13T10:33:01.527 に答える
0

CString は、いくつかの便利な追加機能を提供し、メモリの割り当て/割り当て解除をユーザーから隠すための char* のラッパー クラスです。パフォーマンスの点で大きな違いはないため、MFC クラスを使用している場合は、CString を使用することもできます。

于 2013-03-13T10:27:32.740 に答える