char转qstring

在Qt框架中,charQString之间的转换可以通过以下方法实现:

char转QString

  1. 使用QString的构造函数:
char* ch = "acuity";
QString str(ch);
  1. 使用QString的静态转换函数,如fromUtf8()fromLocal8bit()fromUtf16()
char* ch = "acuity";
QString str = QString::fromUtf8(ch);

QString转char

  1. 使用QByteArray类:
QString str = "hello";
QByteArray ba = str.toLatin1();
char* ch = ba.data();
  1. 对于包含中文字符的情况,可以使用toStdString()方法先将QString转换为std::string,然后再转换为char*
QString str = "我是中文";
std::string s = str.toStdString();
const char* ch = s.c_str();

注意事项

  • char*指向的字符串以空字符'\0'结尾时,QByteArraydata()方法返回的指针指向字符串末尾的空字符之后的位置,这可能导致未定义行为。因此,在转换后应确保字符串以空字符结尾。

  • 如果char*指向的字符串不是以空字符结尾,或者QByteArraydata()方法返回的指针指向的内存区域被释放或改变,那么使用该指针可能会导致未定义行为。

  • char*指向的字符串包含非ASCII字符(如中文字符)时,应使用支持相应编码的转换函数(如toLocal8bit()),以确保字符正确转换。

以上方法适用于Qt 4和Qt 5。如果您使用的是其他版本的Qt,可能需要查看相应版本的文档以获取正确的方法。

Top