sto cercando di fare qualcosa di simile:Come convertire QString in std :: string?
QString string;
// do things...
std::cout << string << std::endl;
ma il codice non viene compilato. Come inviare il contenuto di qstring nella console (ad esempio per scopi di debug o altri motivi)? Come convertire QString
a std::string
?
Questo non è sicuro ed è leggermente più lento del modo corretto. Stai accedendo ai dati di un QByteArray creato nello stack. Il distruttore per QByteArray può essere chiamato prima del costruttore della stringa STL. Il modo più sicuro per creare una funzione di supporto. 'inline std :: string statico toUtf8 (const QString & s) { \t QByteArray sUtf8 = s.toUtf8(); \t return std :: string (sUtf8.constData(), sUtf8.size()); } ' – Vitali
@Vitali non corretto. "Il distruttore per QByteArray può essere chiamato prima che il costruttore della stringa STL" non sia un'istruzione corretta: Citando lo standard: 12.2.3 Gli oggetti temporanei vengono distrutti come ultimo passaggio nella valutazione dell'espressione completa (1.9) che (in modo lessicale) contiene il punto in cui sono stati creati. E l'espressione completa è 'std :: string utf8_text = qs.toUtf8(). ConstData();' Quindi la tua affermazione non è corretta – Artyom
È vero - stavo pensando a const char * x = qs.ToUtf8(). ConstData(). Tuttavia, non è più semplice chiamare qs.toStdString()? – Vitali