|
17 / 18 / 4
Регистрация: 27.06.2016
Сообщений: 236
|
|||||||||||
Как из system string вытащить ascii с русскими символами?09.03.2020, 23:02. Показов 1236. Ответов 4
В в общем передо мной стоит такая задача: из визуального компонента такого как richtextbox вытащить содержащийся в нём текст и поместить его в обычный массив типа char после чего этот массив в числе прочего будет передан через серийный порт.
В общем получается что передать массив в серийный порт у меня получилось но вот как переконвертировать string^ char* непонятно. Я почитал прикреплённую тему о преобразовании типов и понял что её писали не для понимания а для чего то другого. вот приведённый пример System::String^ в char*, wchar_t* и обратно # :
вот такой код:
Представляете себе ребятки писали библиотеку для конвертации строк и бедненькие забыли что весь смысл библиотеки это совместимость данных обычных плюсов и ихнего мокрософта. Как так?
0
|
|||||||||||
| 09.03.2020, 23:02 | |
|
Ответы с готовыми решениями:
4
Конфузы с русскими буквами при переводе из System::String^ в std::string
Как работать с русскими символами ? |
|
Администратор
|
|||||||||||||||
| 12.03.2020, 10:07 | |||||||||||||||
|
2) В статье которую ты упоминал ясно сказано что при преобразовании из String^ можно использовать только const типы
Добавлено через 13 минут Небольшая поправка к примеру. Похоже для преобразования в const char* нужно использовать класс marshal_context. Он используется в случаях когда возвращаемый тип не имеет деструктора. Возвращаемое значение удаляется при удалении экземпляра marshal_context. Чтобы сохранить результат дольше нужно скопировать его в другую переменнную. Собственно несложно написать метод который это будет делать.
1
|
|||||||||||||||
|
17 / 18 / 4
Регистрация: 27.06.2016
Сообщений: 236
|
|
| 15.03.2020, 22:27 [ТС] | |
|
Через контекст маршалинга всё получилось. Но тут есть принципиально важный момент.
Нужно использовать получившуюся строку const char * до команды delete context; Потому что после неё массив исчезает. Что касается русских символов..... Если пересылать введённое например в richtextbox в серийный порт методом writeline то действительно русских символов не будет, а вместо них квадратики. Но, если по предложенному вами способу преобразовать код в const char* а потом перегнать его в управляемый массив типа byte и с помощью метода серийного порта Write(buf,offset,length); закинуть в серийный порт, то все русские символы прекрасно отправляются в ascii кодировке. Судя по всему русские символы в ascii хранятся с номерами больше 128. И они расположены примерное также как и английские согласно стандарту кои 7 или кои 8 я так и не понял до конца. По стандарту так и должно быть коды больше 128 хранят национальные кодировки.
0
|
|
|
Администратор
|
||||
| 16.03.2020, 00:46 | ||||
|
0
|
||||
|
17 / 18 / 4
Регистрация: 27.06.2016
Сообщений: 236
|
||
| 16.03.2020, 21:14 [ТС] | ||
|
0
|
||
| 16.03.2020, 21:14 | |
|
Помогаю со студенческими работами здесь
5
Как в Memo вводить текст русскими символами? Как решить проблему с русскими символами в консоли Как реализовать сравнение строк с русскими символами Как в ОС с англоязычной локализацией запустить консоль с русскими символами? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|