假设
QString str = "string";
const char* c = str.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(); 多写几个字,少出点错,下次记住了!!
'const char* c =