Плюсы и минусы разных типов строк в C ++ - PullRequest
3 голосов
/ 28 января 2009

Извините, что начал еще один из тех неразрешимых вопросов о SO, но мне просто любопытно узнать о плюсах и минусах всех различных типов строк в C ++. Мой конкретный вопрос - между CSFC для MFC и std :: string (так как я занимаюсь только программным обеспечением для Windows), но это будет распространяться на любой из строковых форматов в C ++. Как вы считаете, какой строковый тип лучше всего использовать в C ++ и почему?

ОБНОВЛЕНИЕ: Я действительно нашел дубликат вопроса. Спасибо тем, кто уже ответил. Пожалуйста, направляйте любые новые ответы на этот другой вопрос: Как вы обрабатываете строки в C ++?

Ответы [ 5 ]

7 голосов
/ 28 января 2009

Находясь в Риме, делайте так, как делают римляне. Если вы используете MFC, используйте CString, потому что все классы оптимизированы для него. Что-нибудь еще, используйте std :: string, потому что это стандарт, и вы найдете этот опыт полезным в других контекстах.

5 голосов
/ 28 января 2009

станд :: строка

  1. Это часть STL
  2. Это портативный.
  3. При правильном использовании он может быть столь же эффективным, как с-струны
  4. Это безопаснее, чем с-струны.
3 голосов
/ 28 января 2009

Подводя итог ...

std :: string Плюсы:

  • Портативный
  • Поддержка алгоритмов STL и Boost
  • Безопаснее, чем CStrings

std :: string Минусы:

  • Преобразование в CString для MFC может быть медленнее

CString Плюсы:

  • Функции MFC, оптимизированные для CString

CString Минусы:

  • не портативный
  • Нет поддержки Boost или алгоритма STL
1 голос
/ 28 января 2009

std :: string можно манипулировать алгоритмами форсированной строки в дополнение к алгоритмам STL. Для меня поддержка библиотек для std :: string просто превзошла ожидания MFC.

0 голосов
/ 28 января 2009

Большинство проблем со строковыми типами c ++ происходят из-за того или иного строкового типа, требующего слишком большой перегрузки памяти. Тем не менее, это также может стать обременительным, если вам нужно конвертировать из одного типа строки в другой. Если вы создаете большое приложение, я предлагаю иметь политику использования строк.

...