1

C++ で GUI を使用すると、テキスト フィールドは管理された文字列として格納されると思います。それらを標準の int、float、および string に変換する方法が必要です。何か助けはありますか?

4

3 に答える 3

3

Marshal.StringToHGlobalAnsiを使用して System.String を unmanaged char * に変換できます。完了したら、 Marshal.FreeHGlobalを呼び出して解放してください。文字列を数値に変換するには、 などの通常の .NET 解析関数を使用できますInt32.Parse

于 2009-04-12T04:09:18.440 に答える
0

System::String^ オブジェクトを MFC CString に簡単に変換できます。

CString* name = new CString(managedName);

ここで、managedName はマネージド String です。

于 2009-04-22T09:30:45.320 に答える
0

ネイティブ コードでマネージド メモリを使用するには、最初にマネージド メモリの内容をネイティブ メモリにコピーする必要があります。

たとえば、次のようになります。

マネージ メモリからの内容のコピーは次のとおりです。

const int len = 50;
BYTE *destination = new BYTE[nLength];
System::Byte source[] = new System::Byte[len];

System::Runtime::InteropServices::Marshal::
  Copy(source, 0, IntPtr((void *)destination, len);

マネージド メモリを扱っているため、ガベージ コレクションによってマネージド データが別の場所に移動され、変換するデータを見つけようとするとすべてが失われます。

したがって、__pin を使用してマネージからアンマネージに変換することで、"メモリに固定" したいと考えています。

const int len = 50;
BYTE *source              = new BYTE[len];
System::Byte destination[]     = new System::Byte[len];
BYTE __pin *managedData = &(destination[0]);

::memcpy(source, managedData, len);
于 2009-04-12T04:27:23.450 に答える