引子
有这样一段代码:
int main()
{
QString str = "hello";
auto charStr = str.toStdString().data();
std::cout << charStr << " world" << std::endl;
}
请问输出结果是什么?
答案是: world
这是为什么呢?首先让我们来看下Qt的toStdString()函数的实现。其主要包含以下部分:
inline std::string QString::toStdString() const
{
return toUtf8().toStdString(); }
Q_REQUIRED_RESULT QByteArray toUtf8() const &
{
return toUtf8_helper(*this); }
inline std::string QByteArray::toStdString() const
{
return std::string(constData(), length()); }
inline const char *QByteArray::constData() const
{
return d->data(); } // d:QTypedArrayData<char> *d;
template <class T>
struct QTypedArrayData
: QArrayData
{
const T *data() const {
return static_cast