Qt-char*与QString互转 floatToqstring char*与QString互转 qt字符串与字符串数组操作 Qt 的QString类的使用
相关资源:
https://blog.csdn.net/qq_20553613/article/details/78774476 char*与QString互转
https://blog.csdn.net/weixin_42542969/article/details/88545538 qt字符串与字符串数组操作
1.char* 转QString
方法一:直接用QString的构造函数转换,如下:
char* ch = "acuity";//这种写法在我的QT中报 error: C2440: “初始化”: 无法从“const char [7]”转换为“char *”
QString str(ch);//error: C2040: “str”:“QString”与“char *”的间接寻址级别不同
方法二:用QString的静态转换函数获取,如fromUtf8()、fromLocal8bit()、fromUtf16(),如下:
char sTest[] = "abc";
char *pTest = sTest;
QString qTest = QString::fromUtf8(pTest);
2.QString 转char*
方法一:借助QByteArray类,也是本人用得最多的方法,如下:
QString qTest("abc");
char* pTest;
QByteArray baTest = qTest.toLatin1();
pTest = baTest.data();
第三行一般加上,整合一条语句(pTest=qTest.toLatin1().data())有时会出问题。以上对应英文/ASII码来说,如果涉及中文,建议通用用utf-8格式,可以避免莫名其妙的乱码现。这一点在代码编辑上建议也是使用utf-8格式。如下:
QString qTest("abc中文");
char* pTest;
QByteArray baTest = qTest.toUtf8();
pTest = baTest.data();
方法二:
对于涉及中文情况,也可以先将QString转换为标准库string类型,然后再将string转换为char*。如下:
QString sTest("abc中文");
std::string ssTest = sTest.toStdString();
const char* ch = ssTest.c_str();
在使用Qt Creator编程时,难免会用到将float类型转换为QString类型的时候下面是我所有的方法:
1. 将QString类型转化为float类型,很简单
QString data;
float num = data.toFloat();
即可很轻松的实现。
2. 但是如何将float类型转化为QString类型呢?
查看API很难发现封装好的转化函数
可以尝试使用下面的代码转化:
float num = 1.222;
QString data = QString(“float is %1”).arg(num);
输出结果是:float is 1.222
如果只要float转化成的数值,则使用如下:
QString data = QString(“%1”).arg(num);
=======================qt字符串与字符串数组操作====================
//QString定义
QString s1 = “abc”;
QString s2(“hello”);
/
## /字符串连接
QString s = s1 + s2;
//组包
s = QString(“a = %1, b = %2, c = %3”).arg(250).arg(“hello”).arg(22.22);
qDebug()<<s;
//输出结果:a = 250, b = hello, c = 22.22
s = “a=250,b=hello,c=22.22”;
//参数表示按逗号分隔, 拆分出第0段到第1段, 保存到tmp
QString tmp = s.section(",", 0, 1);
qDebug()<<"tmp = "<<tmp;
//输出结果:tmp=“a=250”
tmp = tmp.section("=", 1, 1);
qDebug()<<“tmp=”<<tmp;
//输出结果:tmp=“250”;
//QString转int
int a = tmp.toInt();
qDebug()<<“a=”<<a;
//输出结果:a=250;
//int转QString组包方式转
tmp = QString("%1").arg(123);
qDebug()<<“tmp=”<<tmp;
//输出结果:tmp=“123”
//int转QString函数方式转
tmp = QString::number(234);
*//char 转QString
const char * buf = “hello, world”;
QString ss = buf;
qDebug()<<"ss = "<< ss;
//std::string转QString
string s = “hello, world”
QString ss = QString::fromStdString(s);
qDebug()<<"ss = "<< ss;
//std::wstring转QString
std::wstring wstr(L"你好, 世界");
QString ss = QString::fromStdWString(wstr);
qDebug()<<"ss = "<< ss;
//字符数组转QString
char buf2[100] = “hello world”;
ss = buf2;
qDebug()<<"ss = "<<ss;
**//QString转char ***
ss = “hello abc”;
//如果没有中文:
QByteArray tmp = ss.toLatin1();
char * buf3 = tmp.data();
//如果有中文:
QByteArray tmp = ss.toLocal8Bit();
char * buf4 = tmp.data();
//替换QString中字符串
QString text(“text-decoration: none”);
text.replace(“none”, “underline”);
//去除QString首尾的空格(包括’\t’, ‘\n’, ‘\v’, ‘\f’, ‘\r’)
QString text(" text-decoration: none ");
text = text.trimmed();
//判断QString是否空
QString().isEmpty(); // return true
QString("").isEmpty(); // return true
QString(" ").isEmpty(); // return false
QString(“abc”).isEmpty(); // return false
QString().isNull(); // return true
QString("").isNull(); // return false
QString(" ").isNull(); // return false
QString(“abc”).isNull(); // return false
QStringList
//定义
QStringList list;
//添加字符串
list << “hello”;
list << “world”;
list.append(“abc”);
//例子2
QStringList chinaMonth;
chinaMonth
<< QStringLiteral(“正月”)
<< QStringLiteral(“二月”)
<< QStringLiteral(“三月”)
<< QStringLiteral(“四月”)
<< QStringLiteral(“五月”)
<< QStringLiteral(“六月”)
<< QStringLiteral(“七月”)
<< QStringLiteral(“八月”)
<< QStringLiteral(“九月”)
<< QStringLiteral(“十月”)
<< QStringLiteral(“冬月”)
<< QStringLiteral(“腊月”)
;
//打印
qDebug()<< “list =”<< list;
//遍历
for(int i = 0; i< list.size();++i)
{
QString tmp = list.at(i);
qDebug()<<“tmp =”<< tmp;
}
//使用QStringList拆分QString
QString str = “hello,world,abc,qt”;
QStringList list2 = str.split(",");
qDebug()<<“list2=”<<list2;
//输出:list2=(“hello”,“world”,“abc”,“qt”);
//判断QStringList中是否包含某个成员
bool b = list2.contains(“123”);
//移除QStringList中的成员
list2.removeOne(“abc”);
====================Qt 的QString类的使用=================
Qt的QString类提供了很方便的对字符串操作的接口。
使某个字符填满字符串,也就是说字符串里的所有字符都有等长度的ch来代替。
QString::fill ( QChar ch, int size = -1 )
例:
QString str = "Berlin";
str.fill('z');
// str == "zzzzzz"
str.fill('A', 2);
// str == "AA"
2,从字符串里查找相同的某个字符串str。
int QString::indexOf ( const QString & str, int from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive ) const
例如:
QString x = "sticky question";
QString y = "sti";
x.indexOf(y); // returns 0
x.indexOf(y, 1); // returns 10
x.indexOf(y, 10); // returns 10
x.indexOf(y, 11); // returns -1
3指定位置插入字符串
QString & QString::insert ( int position, const QString & str )
例如:
QString str = "Meal";
str.insert(1, QString("ontr"));
// str == "Montreal"
3,判断字符串是否为空。
bool QString::isEmpty () const
如:
QString().isEmpty(); // returns true
QString("").isEmpty(); // returns true
QString("x").isEmpty(); // returns false
QString("abc").isEmpty(); // returns false
4.判断字符串是否存在。
bool QString::isNull () const
例如:
QString().isNull(); // returns true
QString("").isNull(); // returns false
QString("abc").isNull(); // returns false
5,从左向右截取字符串
QString QString::left ( int n ) const
例如:
QString x = "Pineapple";
QString y = x.left(4); // y == "Pine"
6,从中间截取字符串。
QString QString::mid ( int position, int n = -1 ) const
例如:
QString x = "Nine pineapples";
QString y = x.mid(5, 4); // y == "pine"
QString z = x.mid(5); // z == "pineapples"
7,删除字符串中间某个字符。
QString & QString::remove ( int position, int n )
例如:
QString s = "Montreal";
s.remove(1, 4);
// s == "Meal"
8,替换字符串中的某些字符。
QString & QString::replace ( int position, int n, const QString & after )
例如:
QString x = "Say yes!";
QString y = "no";
x.replace(4, 3, y);
// x == "Say no!"
9,以某个字符切割字符串。(最近经常用到的)
QString QString::section ( QChar sep, int start, int end = -1, SectionFlags flags = SectionDefault ) const
例如:
复制代码
QString str;
QString csv = "forename,middlename,surname,phone";
QString path = "/usr/local/bin/myapp"; // First field is empty
QString::SectionFlag flag = QString::SectionSkipEmpty;
str = csv.section(',', 2, 2); // str == "surname"
str = path.section('/', 3, 4); // str == "bin/myapp"
str = path.section('/', 3, 3, flag); // str == "myapp"
复制代码
10,把整型,浮点型,或其他类型转化为QString
QString & QString::setNum ( uint n, int base = 10 )
相类似的还有好多重载函数,想深入了解,还是要看Qt帮助文档的。
欢迎关注我,一起进步!扫描下方二维码即可加我