本文主要是介绍Qt中QString::toStdString().c_str() 偶尔存在问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
假设
QString str = "string";
const char* c = str.toStdString().c_str()单步调试显示的结果可能会是'\0'
而当我这样写时
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()自然就是'\0'。不过这种情况在未知情况下发生,有时直接写QString::toStdString().c_str() 也是好用的。
为了避免出错,最好还是
std::string s = str.toStdString();
const char* c = s.c_str();
这样写比较好。
多写几个字,少出点错,下次记住了!!
这篇关于Qt中QString::toStdString().c_str() 偶尔存在问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!