写这篇文章是因为最近在写opengl和opencv程序,由于opencv是c语音移植,opengl也是c语言先实现的,有很多函数的参数是char */const char * ,但是总所周知,char * 很难和其他类型的数据拼接,反而使用string 和qt中的钱string
可以使用+轻松拼接
例:
int i = 2;
"abc" + QString::number(i) + "def";
这样的结果是QString类型的 “abc2def”
这就很舒服
但是要把QString类型要放进const char *为参数类型的函数里,这就遇到了类型转换
其中
QString 转char * 或const char *是同样的方法
.toLatin1().data();
例:
QString("material." + name + number).toLatin1().data()
这是样就可以赋给一个char *变量或直接放在函数参数位置了。
char * 转 QString
这个并不复杂
例:
char *c = "hellow";
QString str=QString(QLatin1String(c));
string 转 char *
也很简单
例:
string a =“fdfd”;
1.const char *c = a.c_str();
2.char *c= a.data();
char * 转 string
这个string做了重载赋值运算符
直接使用=即可
例:
char *p = "fdaf";
string s = p;
还可以使用stream,假如i是一个int类型数据
stringstream ss;
string index;
ss << i;
index = ss.str();
("offsets[" + index + "]").c_str()就是char *类型的