Utilizo Qt extensamente en un sistema de software en el que estoy trabajando para componentes gráficos y GUI. Sin embargo, para la mayoría de los algoritmos internos y el procesamiento de datos, Qt juega un papel más pequeño.Uso de std :: string y QString indistintamente
A menudo me encontraré con la necesidad de convertir de std :: string a QString o viceversa. Mi inclinación es usar std :: string tanto como sea posible y usar QString solo cuando necesito pasar cadenas a clases Qt como aquellas que funcionan con el sistema de archivos.
Como estaba programando esta mañana, me di cuenta de que puede ser un mal diseño tener std :: string y QString salpicado a lo largo de mi código. ¿Debo cambiar completamente a QString? ¿Alguien más se ha topado con esta opción de diseño?
Qt proporciona una gran parte de la misma funcionalidad de STL, pero sigo dudando de cambiar por completo ya que Qt es menos estandarizado y estable.
'QString' tiene un método' toStdString() '. Vea aquí: http://doc.trolltech.com/4.5/qstring.html#toStdString. Para crear un 'QString' de' std :: string' puedes usar este constructor: http://doc.trolltech.com/4.5/qstring.html#QString-7 – yasouser
@yasourer: sí, pero eso depende de un global establecer la codificación de caracteres. Estas funciones provienen de una biblioteca que obtuvo 'std :: string' de otra biblioteca, que siempre contiene UTF-8. –
Puede mejorar esas funciones para que funcionen incluso si las cadenas contienen NUL incorporados, al pasar también la longitud - 'return QString :: fromUtf8 (s.c_str(), s.size())' y 'auto buf = s. toUtf8(); return std :: string (buf.data(), buf.size()); '. –