2 ответов:
Что касается управления памятью,
QStringиспользует функцию копирования при записи, которая теперь явно запрещена в стандартной библиотеке C++. Но для этого есть причина. Идиома копирования при записи работает хуже в многопоточной среде, поскольку она требует синхронизации. в этой статье рассматриваются проблемы более подробно.Реализации
std::stringс другой стороны, обычно используют оптимизацию малых строк (SSO), чтобы избежать любого динамического выделения памяти для небольших строк. Это и есть настоящее современное состояние струнных инструментов.
С управлением памятью вам придется решить, что лучше для вашего приложения. Но одно место, где QString явно сияет в отличие от std:: string, - это поддержка unicode. QString хранит кодированную UTF-16 строку внутри, в то время как std::string кодирует agnostic. Это часто значительно упрощает использование QString, а не std:: string, когда вам приходится иметь дело с пользовательскими многобайтовыми кодированными строками.
Comments