[C++编程小技巧] stringQStringchar*unsigned char[] 转换

[C++编程小技巧] stringQStringchar*unsigned char[] 转换,第1张

最近需要用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;

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/872581.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-13
下一篇 2022-05-13

发表评论

登录后才能评论

评论列表(0条)

保存