Я пытаюсь сделать что-то вроде этого:Как преобразовать QString в std :: string?
QString string;
// do things...
std::cout << string << std::endl;
но код не компилируется. Как выводить содержимое qstring в консоль (например, для целей отладки или по другим причинам)? Как конвертировать QString
в std::string
?
Это не безопасно и немного медленнее, чем нужно. Вы получаете доступ к данным QByteArray, созданным в стеке. Деструктор для QByteArray можно вызвать перед конструктором строки STL. Самый безопасный способ создания вспомогательной функции. 'static inline std :: string toUtf8 (const QString & s) { \t QByteArray sUtf8 = s.toUtf8(); \t return std :: string (sUtf8.constData(), sUtf8.size()); } ' – Vitali
@Vitali не правильно. «Деструктор для QByteArray может быть вызван до того, как конструктор строки STL» не является корректным: Quoting the standard: 12.2.3 Временные объекты уничтожаются как последний шаг при оценке полного выражения (1.9), который (лексически) содержит точку, в которой они были созданы. И полное выражение есть 'std :: string utf8_text = qs.toUtf8(). ConstData();' Так что ваш оператор неверен – Artyom
Это правда - я думал о const char * x = qs.ToUtf8(). ConstData(). Тем не менее, не проще ли просто вызвать qs.toStdString()? – Vitali