Должен ли я использовать CString, basic_string <TCHAR>или что-то еще с ATL / WTL? - PullRequest
4 голосов
/ 26 августа 2011

Я только узнал немного АТЛ в последние пару дней (после того, понимая, как много боли чисто Win32 есть), а также узнали о WTL и MFC, и от того, что я вижу, есть довольно много различных строк классы доступны для меня.

I используется сделать что-то вроде этого:

#include <tchar.h>
#include <string>
namespace std { typedef basic_string<TCHAR> _tstring; }

, а затем использовать _tstring везде в моем коде. После обучения некоторые ATL, я узнал, что есть CString класс atltmp.h. По-видимому, есть другой CString класс WTL, и еще один 1014 * класс в MFC.

У меня есть не знает, буду ли я придерживаться АТЛ, или я буду переключаться на WTL, MFC, или что-то еще. Но сейчас, я нахожусь в процессе преобразования моего кода Win32 в АТЛ, и я не уверен, что нужно изменить, а что сохранить.

я должен сделать мои строки использовать CString вместо _tstring? Есть ли польза в этом, принимая во внимание и размер исполняемого файла ( за исключением разделяемые библиотеки) и портативность / совместимость?

Ответы [ 2 ]

6 голосов
/ 26 августа 2011

Мое предпочтение будет придерживаться CString для ATL / MFC / WTL.Это не так, как у вас есть много вариант для портативности, если вы используете эти рамки в любом случае;и вы знаете, что они говорят: When in Rome ...

1004 * Кроме того, CString действительно есть несколько тонкостей об этом
  • Вы можете загрузить строки ресурсов из исполняемых файлов с помощью CString::LoadString
  • Получите прямой доступ к внутреннему буферу строки с использованием CString::GetBuffer/ReleaseBuffer
0 голосов
/ 08 сентября 2011

Я только что прочитал, что CString не поддерживает нулевые символы.

Полагаю, я останусь с STL.

...