Самый простой способ преобразовать UnicodeString в const char * в С++?

Я новичок в С++ и у меня проблема с преобразованием UnicodeString в строку, поэтому теперь ищу самый простой способ преобразования из одного типа в другой.

Я хочу использовать базовую функцию Windows, для которой нужна строка с UnicodeString, как заставить код работать?

UnicodeString Exec = "notepad";
WinExec(Exec.c_str(), 0);

Используемая среда - C++ Builder xe2.


person user2309974    schedule 23.04.2013    source источник
comment
WideCharToMultiByte(), вероятно, что вы ищете. Читай внимательно. Это довольно прямолинейно.   -  person WhozCraig    schedule 23.04.2013


Ответы (2)


std::string не может хранить данные в формате Unicode. Для этого вам понадобится std::wstring.

Я никогда раньше не слышал о UnicodeString, но вот посмотрите на API:

http://docwiki.embarcadero.com/Libraries/XE2/en/System.UnicodeString_Methods

У него есть функция .c_str(), которая возвращает wchar_t*, которую затем можно использовать для создания std::wstring

Если вам действительно нужен std::string, посмотрите этот ответ.

Как преобразовать wstring в строку?

person Salgar    schedule 23.04.2013
comment
wchar_t не поддерживает Unicode, и вы не можете полагаться на std::wstring быть достаточно большим, чтобы хранить символ Unicode. Если возможно, используйте std::u16string или std::u32string в зависимости от ситуации. - person Captain Obvlious; 23.04.2013
comment
Да, извините, wchar_t may хранит символы Юникода, но его размер зависит от компилятора. Спасибо @Captain Obvlious - person Salgar; 23.04.2013

Если вам нужна полная поддержка юникода в C++, выберите ICU API. Вот сайт, где вы можете найти все об этом. http://site.icu-project.org/

person satheesh    schedule 11.06.2014