QString转char*
因为char*最后都有一个‘/0’作为结束符,而采用QString::toLatin1()时会在字符串后面加上‘/0’ 方法1: Qstring str; char* ch; QByteArray ba = str.toLatin1(); ch=ba.data(); 这样就完成了QString向char*的转化。经测试程序运行时不会出现bug 注意不可以str.toLatin1().data()这样一部完成,可能会出错。
补充:以上方法当QString里不含中文时,没有问题,但是QString内含有中文时,转换为char*就是乱码,采用如下方法解决: 方法2: 添加GBK编码支持: #include <QTextCodec> QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK")); Qstring str; char* ch; QByteArray ba = str.toLoacl8Bit(); toLoacl8Bit支持中文 ch=ba.data();
方法3: 先将QString转为标准库中的string类型,然后将string转为char*,如下: std::string str = filename.toStdString(); const char* ch = str.c_str(); 注意三种方法最好是不要一步完成,因为经常转换出现错误,而且不容易发觉错在哪 |