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

  • 相关阅读:
    Java Nashorn--Part 4
    Java Nashorn--Part 3
    Java Nashorn--Part 2
    Java Nashorn--Part 1
    Java 异步 IO
    代码天天写,快乐天天有!
    比迷路更可怕的,是对读书的迷失。
    《寄生兽》观后感
    浅谈生活
    8月份的尾巴
  • 原文地址:https://www.cnblogs.com/liushui-sky/p/9018319.html
Copyright © 2011-2022 走看看