zoukankan      html  css  js  c++  java
  • Qt中QString::toStdString().c_str() 偶尔存在问题

    假设

    QString str = "string";

    const char* c = str.toStdString().c_str()单步调试显示的结果可能会是''

    而当我这样写时

    std::string s = str.toStdString(); 

    const char* c = s.c_str();

     c 是"string"

    为啥呢???

    原来有可能是这样的。

    str.toStdString().c_str()中toStdString()是一个临时std::string变量,而c_str()是指向这个临时std::string变量的字符串地址,所以传给c时这个临时std::string变量已经被析构,其内容是空,c_str()自然就是''。不过这种情况在未知情况下发生,有时直接写QString::toStdString().c_str() 也是好用的。

    为了避免出错,最好还是

    std::string s = str.toStdString(); 

    const char* c = s.c_str();

    这样写比较好。

    多写几个字,少出点错,下次记住了!!

    转自:https://blog.csdn.net/u013383344/article/details/53379029

  • 相关阅读:
    11.09_近期需要关注和学习的,,,
    11.08_
    11.04_晚
    11.04
    gitlab
    eos开发指南
    谷歌助记词
    solidity语法解读
    parity注记词和地址
    dice2win早期版本
  • 原文地址:https://www.cnblogs.com/liushui-sky/p/9018319.html
Copyright © 2011-2022 走看看