36 / 36 / 0
Регистрация: 24.05.2009
Сообщений: 178
1

Конфузы с русскими буквами при переводе из System::String^ в std::string

23.01.2012, 22:52. Показов 2466. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Использую такую конструкцию:
C++
1
2
3
string stdstr;
for(int i=0;i<sysstr->Length;++i)
    stdstr+=sysstr[i];
Для английского текста все ок. Но когда пытаюсь таким же образом переместить русские символы, нормально отображаемые в дебаггере для sysstr, в stdstr помещаются кракозябры. Например, вместо
C:\Словарь.txt туда копируется C:\!;>20@L.txt. Поле "набор символов" в свойствах проекта менять пробовал, проблема осталась. Заранее признателен.
0
23.01.2012, 22:52
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.01.2012, 22:52
Ответы с готовыми решениями:

Преобразование между типами System::String, char*, wchar_t*, std::string и др.
При написании кода, взаимодействующего как с .NET и управляемым кодом, так и с неуправляемым кодом (такими как стандартные библиотеки C и...

Где и почему используют ту или иную строку std::string, char[], System::String^ ?
Где и почему используют ту или иную строку std::string, char, System::String^ ? Объясните пожалуйста где нужно использовать...

Как конвертировать System::String в std::string?
Как конвертировать system::string в std::string? А лучше сразу system::string в int.

2
32 / 32 / 2
Регистрация: 07.08.2011
Сообщений: 89
23.01.2012, 23:10 2
Нормальные люди используют:
C++
1
2
3
4
5
6
7
8
9
10
11
12
static const std::string SysToStd(System::String^ SysStr)
    {
        using namespace Runtime::InteropServices;       
        char *v = (char*) (Marshal::StringToHGlobalAnsi(SysStr)).ToPointer();
                    std::string result = std::string(v);
                    Marshal::FreeHGlobal(System::IntPtr((void*)v));
                    return result;
    }
    static System::String^ StdToSys(std::string StdStr)
    {
        return gcnew System::String(StdStr.c_str());        
    }
У меня работало. Копирайт этого кода ищите в интернете, не мой. Хотя суть очевидна и понятна.
4
36 / 36 / 0
Регистрация: 24.05.2009
Сообщений: 178
23.01.2012, 23:18  [ТС] 3
Премного благодарен
1
23.01.2012, 23:18
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.01.2012, 23:18
Помогаю со студенческими работами здесь

System::String^ vs stl::std::string
В консольном варианте есть программа, которая получает с экрана строку типа string, работает с ней и выдает результат. Необходимо все...

Конвертация из System::String^ в std::string
как перевести из System::String^ в std::srting

Перевод из std::string в System::String
есть класс с полем std::string, как можно перевести его в System::String чтоб можно было выводить в dataGirdView Попытался в классе...

Преобразование System::String^ в std::string
Здравствуйте. Как можно преоброзовать System String^ в std::string Дело в том что получение имени пользователя происходит в поле System...

"System::String^ не может быть преобразована в const std::string"
Добрый день! Моя проблемма заключается в следующем. я использую textBox1 куда пользователь программы вводит некоторый ТЕКСТ содержащий и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему

Редактор формул (кликните на картинку в правом углу, чтобы закрыть)
Опции темы

Новые блоги и статьи
Как вернуть энтузиазм
Uswer 17.02.2025
Приветствую тебя читатель. Сначала небольшая предыстория. Лет 5-6 тому назад появилась у меня идея автоматизации некоего процесса на работе. А так как я уже много лет увлекаюсь (не путать с. . .
Оператор satisfies в TypeScript: как он работает и где применять
stackOverflow 17.02.2025
Оператор satisfies - одна из наиболее полезных возможностей TypeScript, позволяющая проверять типы значений без изменения их исходного типа. В отличие от других операторов типизации, satisfies дает. . .
Почему могут не шифроваться русские символы в Java
Wired 17.02.2025
При разработке на Java нередко возникают сложности с шифрованием русских символов. Эта проблема особенно актуальна для разработчиков, создающих программное обеспечение для русскоязычной аудитории. . . .
Отличия ОС для x86_64 и ARM
Wired 17.02.2025
На данный момент сосуществуют две основные архитектуры процессоров - x86_64 и ARM. Эти архитектуры имеют принципиально разные подходы к организации вычислений и обработке данных, что накладывает. . .
Многопоточность в Python: как использовать Thread
bytestream 17.02.2025
Поток выполнения (thread) - это наименьшая последовательность инструкций, которая может управляться планировщиком операционной системы. Представьте себе, что ваша программа - это книга, а потоки -. . .
Как воспроизвести Race Condition в Python
bytestream 17.02.2025
В многопоточном программировании существует множество подводных камней, и одним из самых коварных является состояние гонки (Race Condition). Этот термин описывает ситуацию, когда результат выполнения. . .
Ошибка "node: --openssl-legacy-provider is not allowed in NODE_OPTIONS"
bytestream 17.02.2025
Каждый разработчик рано или поздно сталкивается с ситуацией, когда при запуске проекта Node. js неожиданно выскакивает ошибка "node: --openssl-legacy-provider is not allowed in NODE_OPTIONS". Это. . .
Ошибка pip Python "AttributeError­: module 'lib' has no attribute 'OpenSSL_add_al­l_algorit­hms'"
bytestream 17.02.2025
При разработке на Python частенько сталкиваешься с разными сюрпризами, но ошибка AttributeError: module 'lib' has no attribute 'OpenSSL_add_all_algorithms' - это что-то особенное. Знаете, это как. . .
Сообщение Play Store "You must complete the advertising ID declaration before you can release an app that targets"
bytestream 17.02.2025
Рекламный идентификатор - это уникальный, но восстанавливаемый строковый идентификатор для каждого устройства Android. Думаю, вы удивитесь, но даже если ваше приложение не показывает рекламу. . .
Отличия App Router от Pages Router в Next.js
bytestream 17.02.2025
Next. js прошел длинный путь развития, и одним из самых значительных изменений стало появление App Router - революционного подхода к организации маршрутизации в приложении. Этот новый способ пришел на. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru