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帮助文档的。

 

posted on 2020-05-14 16:36  疯狂delphi  阅读(2519)  评论(0编辑  收藏  举报

导航