Когда я использую GUI в C++, текстовые поля хранятся как управляемые строки, я думаю. Мне нужен способ конвертировать их в стандартные ints, float и strings. Любая помощь?Преобразование между управляемыми и неуправляемыми типами в C++?
ответ
Вы можете преобразовать System.String в неуправляемый символ *, используя Marshal.StringToHGlobalAnsi. Убедитесь, что вы освободили его, когда закончите, позвонив по номеру Marshal.FreeHGlobal. Чтобы преобразовать строки в числовые значения, вы можете использовать обычные функции синтаксического анализа .NET, такие как Int32.Parse
.
Чтобы использовать управляемую память в собственном коде, сначала необходимо скопировать содержимое управляемой памяти в исходную память.
Так, например:
Копирование содержимого из управляемой памяти выглядит следующим образом:
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);
Вы можете просто преобразовать System :: String^объекты MFC CString по
CString* name = new CString(managedName);
где managedName - управляемая строка.
- 1. Наследование между управляемыми и неуправляемыми классами
- 2. Каковы различия между управляемыми и неуправляемыми библиотеками?
- 3. C++/cli распознает переходы между управляемыми/неуправляемыми и измеряет их стоимость
- 4. Разница между управляемыми C++ и C++
- 5. Преобразование между двумя типами в c
- 6. Преобразование между типами списка в C#
- 7. В чем разница между управляемыми и неуправляемыми поставщиками данных в .Net?
- 8. Преобразование между типами
- 9. C++ пользовательское преобразование между базовыми типами
- 10. преобразование между типами в javascript
- 11. Преобразование между двумя типами потоков
- 12. C++ Управляется неуправляемыми преобразованиями
- 13. В чем разница между управляемыми C++ и C#?
- 14. Неявное преобразование между сторонними типами
- 15. Haskell - Преобразование между типами матриц
- 16. Преобразование между типами деревьев (Haskell)
- 17. Расширение Преобразование между ссылочными типами
- 18. Неявное преобразование между ссылочными типами
- 19. Каковы различия между типами значений и ссылочными типами в C#?
- 20. Преобразование между типами ввода в командах bash
- 21. Преобразование между целыми типами в WebSharper
- 22. Преобразование между типами в шаблонах функций
- 23. Кодирование системы инвентаризации с полиморфными элементами и управляемыми типами товаров
- 24. Путаница между типами данных OpenCv4Android и C++
- 25. строковый литерал - преобразование шаблона между типами полукокса
- 26. Неверное преобразование между теми же типами
- 27. Связи между двумя управляемыми компонентами
- 28. Передача параметров между управляемыми компонентами
- 29. C# Разница между типами литья
- 30. Разница между типами указателей C