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幫助文檔的。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM