Staram się zrobić coś takiego:Jak przekonwertować QString na std :: string?
QString string;
// do things...
std::cout << string << std::endl;
ale kod nie kompiluje. Jak wyprowadzić zawartość qstring do konsoli (np. Do celów debugowania lub z innych powodów)? Jak przekonwertować QString
na std::string
?
To nie jest bezpieczne i jest nieco wolniejsze niż właściwy sposób. Uzyskujesz dostęp do danych QByteArray utworzonych na stosie. Destruktor dla QByteArray może zostać wywołany przed konstruktorem ciągu STL. Najbezpieczniejszy sposób utworzenia funkcji pomocnika. 'statyczny wbudowany std :: string doUtf8 (stały QString i s) { \t QByteArray sUtf8 = s.toUtf8(); \t return std :: string (sUtf8.constData(), sUtf8.size()); } ' – Vitali
@Vitali nie zgadza się. "Destruktor dla QByteArray może zostać wywołany przed konstruktorem ciągu STL" nie jest poprawnym stwierdzeniem: Cytując standard: 12.2.3 Obiekty tymczasowe są niszczone jako ostatni krok w ocenie pełnego wyrażenia (1.9), który (leksykalnie) zawiera punkt, w którym zostały utworzone. A pełne wyrażenie to 'std :: string utf8_text = qs.toUtf8(). ConstData();' Tak więc twoja instrukcja nie jest poprawna – Artyom
To prawda - myślałem o const char * x = qs.ToUtf8(). ConstData(). Nadal nie jest łatwiej po prostu wywołać qs.toStdString()? – Vitali