estoy tratando de hacer algo como esto:Cómo convertir QString a std :: string?
QString string;
// do things...
std::cout << string << std::endl;
pero el código no compila. Cómo salida del contenido de QString en la consola (por ejemplo, para fines de depuración u otras razones)? Cómo convertir QString
a std::string
?
Esto no es seguro y es un poco más lento que la forma correcta. Está accediendo a los datos de un QByteArray creado en la pila. El destructor para QByteArray se puede llamar antes del constructor de la cadena STL. La forma más segura de crear una función de ayuda. 'static inline std :: string toUtf8 (const QString & s) { \t QByteArray sUtf8 = s.toUtf8(); \t return std :: string (sUtf8.constData(), sUtf8.size()); } ' – Vitali
@Vitali no es correcto. "El destructor para QByteArray se puede llamar antes del constructor de la cadena STL" no es una declaración correcta: Citando el estándar: 12.2.3 Los objetos temporales se destruyen como el último paso en la evaluación de la expresión completa (1.9) que (léxicamente) contiene el punto donde fueron creados. Y la plena expresión no es 'utf8_text std :: string = qs.toUtf8() constData();' Por lo que su afirmación no es correcta – Artyom
eso es cierto - Estaba pensando en const char * x = qs.ToUtf8() constData..(). Aún así, ¿no es más fácil simplemente llamar a qs.toStdString()? – Vitali