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