最近需要用qt调用VS写的dll,遇到一些接口问题,在此记录,有误欢迎指出
// unsigned char path[] 转 string
unsigned char path[] = “C:/DeskTop/文件名.后缀”;
char* buf = reinterpret_cast<char*> (path);
string pathStr(buf);
cout << pathStr.c_str() << endl;
Qt Creator:
// QString 转 char*, 再转 string
/*
方法一:先转成std::string,再进一步转换成char*
*/
QString filePath = “C:/DeskTop/文件名.后缀”;
string str1= filePath.toStdString();
char* str2=const_cast<char *>(str1.c_str());
qDebug() << str2;
string str3(str2);
qDebug() << str3.c_str();
/*
方法二:先转成QByteArray,再进一步转换成char*
*/
QString filePath = “C:/DeskTop/文件名.后缀”;
QByteArray Temp= filePath.toLocal8Bit();
char* str2 = Temp.data();
//或者,直接 char* str2 = ilePat.toLocal8Bit().data();
qDebug() << str2;
// 转换成string 同上
说明:第一种方法得到的char*, 用qDebug()可以打印出来中文字符
但实际上如果是路径读取文件的时候,可能会读不出来;
第二种方法得到的char*,打印的时候,中文字符可能会以 ? 代替,
但是能够正常的读取文件
// QString 转 char[]
QString filePath = “C:/DeskTop/文件名.后缀”;
char pathTemp[filePath.length()];
strcpy(pathTemp, filePath.toUtf8().data()); // 这里有的教程写的是 .toLatin1,但是好像汉字不行,具体忘记了,谁有空可以自己测一下
qDebug() << pathTemp;
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)