Какой тип строки лучше всего использовать для Win32 и DirectX? - PullRequest
2 голосов
/ 24 января 2012

Я нахожусь в процессе разработки маленькой игры для DirectX 10 и C ++, и я нахожу это адом с различными типами строк, которые требуются для различных вызовов функций DirectX / Win32.

Кто-нибудь может порекомендовать, какие из доступных строк лучше всего использовать, в идеале это будет один тип строки, который дает хорошее приведение к другим типам (в основном LPCWSTR и LPCSTR).До сих пор я использовал std :: string и std :: wstring и выполнял функцию .c_str (), чтобы получить его в правильном формате.

Я хотел бы получить только 1 тип строки, которую яиспользуйте для передачи во все функции, а затем выполните приведение внутри функции.

Ответы [ 3 ]

6 голосов
/ 24 января 2012

Используйте std::wstring с c_str() точно так же, как вы это делали.Я не вижу смысла использовать std::string в Windows, ваш код всегда может использовать собственную кодировку UTF-16.

3 голосов
/ 24 января 2012

Я бы тоже придерживался std::wstring. Если вам действительно нужно куда-то передать std::string, вы все равно можете конвертировать его на лету:

std::string s = "Hello, World";
std::wstring ws(s.begin(), s.end());

Работает и наоборот.

0 голосов
/ 24 января 2012

Если вы используете Native COM (материал #import <type_library>), тогда _bstr_t.Он изначально настраивается как на LPCWSTR, так и на LPCSTR, и прекрасно сочетается с моделью распределения памяти COM.Нет необходимости в .c_str() звонках.

...