QString、std::string、char* 之间的转换
1、QString、std::string转化成char*
#include <iostream> #include <QtCore/QString> int main() { QString str_Q("cupcupy北京"); int j = str_Q.length(); //11,一个汉字算两个字符 std::string str_string = str_Q.toStdString(); int i = str_string.length();//11,字符串长度不包括结尾的'/0' //c_str()返回的是一个临时指针,即str_p指向的内存地址属于str_string //一旦str_string被析构,str_p就成了一个悬浮指针 //正确使用时要使用new + strcpy const char* str_p = str_string.c_str(); char* ch = new char( i + 1 ); //字符串结尾是'/0' //strcpy认为ch指向的空间足够大,strcpy_s检查ch指向的空间是否足够 strcpy_s( ch, i + 1, str_p); std::cout<<ch<<std::endl; return 0; }
2、char*转换成std::string
char* temp = "cupbeijing"; std::string str = temp;//此处的等号进行了拷贝 //如下可知 std::string fileName_str; if(true) { char* fileName = "pwave.sgy"; fileName_str = fileName; }