控制QString与C风格字符串转换的宏

1、QT_NO_CAST_FROM_ASCII 禁止将C语言风格的字符串或指针转自动转成Unicode。

    char cc[] = "hello";
    QString str = cc;
    debug str;

    QString str2 = "hello";
    debug str2;

这里进行了转换,将C语言风格的字符指针:

const char * p = "hello";

和C语言风格的字符串cc[]转成一个QString,在pro文件中添加:

DEFINES += QT_NO_CAST_FROM_ASCII

之后,将禁止这样的转换:

2、QT_RESTRICTED_CAST_FROM_ASCII 禁止数组转换,允许指针转换成Unicode。

3、QT_NO_CAST_TO_ASCII 禁止将QString转成C字符串的操作

这里QByteArray的insert操作会调用QChar的toAscii()将QString转成C字符串插入到QByteArray,启用这个宏之后此操作就被禁止了。类似的还禁止append QString,insert QString,replace QString,禁止+= QString,禁止indexOf QString,禁止lastIndexOf QString。

猜你喜欢

转载自blog.csdn.net/kenfan1647/article/details/113827620