QT中关于QString用法
QT中关于QString用法有:
1、获取子字符串在字符串中的位置。
(1)indexOf():返回此字符串中第一次出现的字符串str的索引位置,从索引位置向前搜索。如果找不到str,则返回-1。
(2)lastIndexOf()函数:返回字符串的最后一次出现的索引。
2、字符串的追加和组合。
(1)二元操作符“+”用来组合两个字符串,“+=”可以用于字符串的追加。
(2)QString::append()函数,具有与“+=”操作符同样的功能,实现字符串末尾追加另一个字符串。
(3)组合字符串的另一个函数是QString::sprintf(),此函数支持的格式定义和C++库中的函数sprintf()定义一样。
3、字符串相互转换。
(1)数字转换为字符串,使用静态函数QString::number():
(2)字符串转换为数字,常用的有toInt(),toLongLong(),toDouble()等等
4、提取字符串。
(1)中间截取mid(intposition,intn=-1)函数用于返回一个字符串,如果目标字符串包含从指定的位置索引开始的n个字符,则返回指定位置开始的由n个字符组成的字符串;如果位置索引超过了字符串的长度,则返回空字符串。
(2)左边截取left()函数返回最前面的n个字符,右边截取right()函数返回最后的n个字符。
5、判断字符串是否包含。
(1)isEmpty函数用于判断字符串是否为空,并返回判断结果。
(2)isNull效果和isEmpty类似,如果该字符串为空,则返回true;否则返回false。
扩展资料:
QString和C标准中的字符串不同,C++原生提供两种字符串: 传统的C风格以’\0’结尾的字符数组和std::string类。与这些不同,QString使用16-bit Unicode值。
当使用QString时,不必操心如此隐秘的细节,像分配足够的内存或者是数据是’\0’结尾的。 总的来说,QString可以被认为是一个QChar向量。一个QString能嵌入’\0’字符。 length()函数返回整个字符串大小,包括嵌入的’\0’。
QT QString
一、QSting删除空白符
1、使用正则表达
str= str.remove( QRegExp(“\\s“) )//删除字符床中的所有空白符
2、使用simplified()方法
str = str.simplified()//删除字符串前后的所有空白符,中间的所有空白符使用单个空格替换
3、使用trimmed()方法
str = str.trimmed()//删除字符串前后的所有空白符
QT中的常用数据结构及函数
1、QString
2、QVariant
3、QStringList
4、QVector
5、QStack
6、QQueue
7、QList
8、QMap
QString 是qt中关于String的封装类,用于处理字符串。
’’’
void testQString(){
QString str1=“hello“;
qDebug()《《str1;
str1.append(“word“);
qDebug()《《str1;//“hello word“
qDebug()《《str1.indexOf(“word“);//5
QString str2=“Hello“;
qDebug()《《str2;
str2.fill(’x’);//“xxxxx“
qDebug()《《str2;
str2.fill(’x’,2);//“xx“
qDebug()《《str2;
qDebug()《《QString().isEmpty();//true
qDebug()《《QString(““).isEmpty();//true
qDebug()《《QString(“ “).isEmpty();//false
qDebug()《《QString(“abc“).isEmpty();//false
qDebug()《《QString().isNull();//true
qDebug()《《QString(““).isNull();//false
qDebug()《《QString(“ adc“).isNull();//false
QString str3=“Hello“;
qDebug()《《str3;
qDebug()《《str3.left(3);//“hel“
qDebug()《《str3.mid(2,2);//“ll“
qDebug()《《str3.mid(2);//“llo“
qDebug()《《str3.right(4);//“ello“
QString str4=“hello word“;
qDebug()《《str4;//“hello word“
str4.remove(5,6);
qDebug()《《str4;//“hello“
QString str5=“hello word“;
str5.insert(5,QString(“word“));
qDebug()《《str5;//“hello wordword“
QString str6=“hello word“;
QString re=“you“;
str6.replace(“word“,re);
qDebug()《《str6;//“hello you“
QString path=“/user/local/bin/mapp“;
qDebug()《《path;//“/user/local/bin/mapp“
QStringList list=path.split(’/’,QString::SkipEmptyParts);
qDebug()《《list;//(“user,“local“,“bin“,“mapp“)
QString str7=“hello word“;
qDebug()《《str7.startsWith(“hello“);//true
qDebug()《《str7.endsWith(“word“);//true
qDebug()《《QString(“hello %1,helo you %2 “).arg(“word“).arg(“hmf“);//hello word,hello you hmf
qDebug()《《QString::localeAwareCompare(“xxx“,“XXX“);//-1
}
’’’
QVariant 是万能变量,可以存取各种变量。
’’’
void testQVariant(){
QVariant var;
var.setValue(QString(“hello word“));
qDebug()《《var;//QVariant(QString, “hello word“)
QString data=var.toString();
qDebug()《《data;//“hello word“
// var.clear();
var.setValue(100);
qDebug()《《var;//QVariant(int, 100)
int d=var.toInt();
qDebug()《《d;//100
}
’’’
QStringList 是存储QString类型的列表。
’’’
void testQStringList(){
QStringList stL;
stL《《“str1“《《“str2“《《“str3“《《“str4“;
qDebug()《《stL;//(“str1“, “str2“, “str3“, “str4“)
QString str1=stL.join(“/“);
qDebug()《《str1;//“str1/str2/str3/str4“
qDebug()《《stL.contains(“str1“);//true
qDebug()《《stL.indexOf(“str2“);//1
stL.append(“str3“);
stL.append(“str4“);
qDebug()《《stL;//(“str1“, “str2“, “str3“, “str4“, “str3“, “str4“)
stL.removeDuplicates();
qDebug()《《stL;//(“str1“, “str2“, “str3“, “str4“)
//遍历方法1
for (int i=0;i《stL.size();i++){
qDebug()《《stL.at(i);
}
//遍历方法2
QStringList::Iterator itr;
for(itr=stL.begin();itr!=stL.end();++itr){
qDebug()《《*itr;
}
}
’’’
QVector 数组的模板类,本质是动态数组,存储方式是一片连续的内存空间。
’’’
void testQVector(){
QVector《QString》 tV;
tV.append(“Str1“);
tV.append(“str2“);
tV.append(“str3“);
tV.append(“str4“);
qDebug()《《tV;//QVector(“Str1“, “str2“, “str3“, “str4“)
tV.prepend(“str0“);
qDebug()《《tV;//QVector(“str0“, “Str1“, “str2“, “str3“, “str4“)
tV.push_back(“str5“);
qDebug()《《tV;//QVector(“str0“, “Str1“, “str2“, “str3“, “str4“, “str5“)
tV.push_front(“str00“);
qDebug()《《tV;//QVector(“str00“, “str0“, “Str1“, “str2“, “str3“, “str4“, “str5“)
for(int i=0;i《tV.size();i++){
qDebug()《《tV.at(i);
}
QVector《QString》::Iterator itr;
for(itr=tV.begin();itr!=tV.end();itr++){
qDebug()《《*itr;
}
qDebug()《《tV.isEmpty();//false
qDebug()《《tV.at(0);//“str00“
qDebug()《《tV.value(3);//“str2“
qDebug()《《tV.size();//7
tV.pop_back();
qDebug()《《tV;//QVector(“str00“, “str0“, “Str1“, “str2“, “str3“, “str4“)
tV.pop_front();
qDebug()《《tV;//QVector(“str0“, “Str1“, “str2“, “str3“, “str4“)
}
’’’
QStack为qt中的栈模板类,继承于QVector,具有后进先出的特性。
’’’
void testQStack(){
QStack《QString》 stack;
stack.push(“str1“);
stack.push(“str2“);
stack.push(“str3“);
stack.push(“str4“);
qDebug()《《stack;//QVector(“str1“, “str2“, “str3“, “str4“)
qDebug()《《stack.pop();//“str4“
qDebug()《《stack;//QVector(“str1“, “str2“, “str3“)
qDebug()《《stack.top();//“str3“
qDebug()《《stack;//QVector(“str1“, “str2“, “str3“)
qDebug()《《stack.isEmpty();//false
qDebug()《《stack.size();//3
while(!stack.isEmpty())
{
qDebug()《《stack.pop();
}
}
’’’
QQueue 是qt中的队列的模板类,同样继承自QVector,具有先进先出的特性。
’’’
void testQueue()
{
QQueue《QString》 qq;
qq.enqueue(“str1“);
qq.enqueue(“str2“);
qq.enqueue(“str3“);
qq.enqueue(“str4“);
}
’’’
QList是qt中的链表的实现,同时可以按位置索引和快速插入删除数据。
’’’
void testList(){
QList《QString》 ql;
ql.append(“str“);
ql.append(“str1“);
ql.append(“str2“);
ql.append(“str3“);
ql.append(“str4“);
ql.append(“str5“);
qDebug()《《ql;//(“str“, “str1“, “str2“, “str3“, “str4“, “str5“)
for(int i=0;i《ql.size();i++){
qDebug()《《ql.at(i);
}
QList《QString》::Iterator itr;
for(itr=ql.begin();itr!=ql.end();itr++){
qDebug()《《*itr;
}
ql.pop_back();
qDebug()《《ql;//(“str“, “str1“, “str2“, “str3“, “str4“)
ql.pop_front();
qDebug()《《ql;//(“str1“, “str2“, “str3“, “str4“)
qDebug()《《ql.size();//4
qDebug()《《ql.isEmpty();//false
}
’’’
QMap 是qt中映射的模板类。就是字典。
’’’
void testMap()
{
QMap《QString,int》 map;
map=1;
map.insert(“two“,2);
map=3;
map=4;
map=5;
qDebug()《《map;//QMap((“five“, 5)(“four“, 4)(“one“, 1)(“three“, 3)(“two“, 2))
qDebug()《《map.value(“one“);//1
qDebug()《《map;//2
qDebug()《《map.contains(“two“);//true
qDebug()《《map.keys();//(“five“, “four“, “one“, “three“, “two“)
qDebug()《《map.values();//(5, 4, 1, 3, 2)
//数据遍历
QMapIterator《QString ,int》 itr(map);
while(itr.hasNext()){
itr.next();
qDebug()《《itr.key()《《itr.value();
}
}
’’’
QString怎么去掉最后一个字符
您好,很高兴为您解答。
string = string.left(string.length() – 1);
如若满意,请点击右侧【采纳答案】,如若还有问题,请点击【追问】希望我的回答对您有所帮助,望采纳!
在Qt中如何使用QRegExp正则表达式剔除字符串中的时间字串[xx:xx:xx.xxx]
这个可以不用正则表达式,如果两边的长度是固定,你可以看下QString的left和right函数.
QString r = “017F00000{1,3})“));
r.remove(“,所有最后再把中括号去掉
QString和QByteArray的用法
QChar :表示一个Unicode编码的字符;
QByteArray :相当于是QChar的一个vector《》;
QStringRef :是对QString一部分的一个引用,作了一些优化;
QStringList :是QList的派生类,是字符串的列表类,非常有用;
QRegExp :对于正则表达式提供了丰富的操作,详细用法;
QTextCodec :提供QString与不同编码的字符串之间的转换
隐式共享又称回写复制。
1、当两个对象共享同一份数据(通过浅拷贝实现数据块的共享)时,如果数据不改变,则不进行数据的复制(浅拷贝,引用)。
2、而当某个对象需要改变数据时,则进行深拷贝(堆中开辟空间)。
Qt中支持隐式共享的类,还包括:
1、所有的容器类。
2、QString、QByteArray、QBrush、QPen、QPalette、QBitmap、QImage、QPixmap、QCursor、QDir、QFont和QVariant等。
详细参见 QString类的详细用法
QString类存储Unicode 字符串(UTF-16编码),QString字符串中能嵌入’\0’字符,length()函数返回整个字符串的大小,包括嵌入的’\0’字符。
QString转Qchar时,需先转换成QByteArray。
常用字符串函数如下:
返回【从pos起长度为len】的字符串。
返回【从pos起到字符串结尾】的字符串。
返回【最前面 长度为len】的字符串。
返回【最后面 长度为len】的字符串。
第一个参数为【待检字符串 / 字符】;第二个参数为【起始位置】,默认从0字节开始检索。
检索成功返回字节起始位置值,检索失败返回 -1。
检查字符串是否以【字符串 / 字符】开始,成功则返回true,失败则返回false。
检查字符串是否以【字符串 / 字符】结尾,成功则返回true,失败则返回false。
QByteArray类存储char型字符。
string类型的字符串,如何去掉末尾的换行符\r
#include《string》
using namespace std;
int main()
{
string s = “ancdr“; //为了方便调试观察,改成了r,一样的
//s.assign(s,0,4); //方法1:把字符串s中从0开始的4个字符赋给当前字符串
s.erase(4,1); //方法2:把字符串s中从第4个开始的1个字符删除。
return 0;
}
两种方法都可以。
求教,QString删除重复项
把字符串遍历放到QSet《QChar》里,在转换成QStringList《QChar》,最后转成CString,需要排序的话在indexOf取下原始字符串的顺序。
QT中用qstring显示固定小数点出现bug
QString 类中各函数的作用。
一、字符串连接函数。
1、QString也重载的+和+=运算符。这两个运算符可以把两个字符串连接到一起。
2、QString的append()函数则提供了类似的操作,例如:
str = “User: “;
str.append(userName);
str.append(“\n“);
二、获取字符串某位置的值。
QString x = “Nine pineapples“;
QString y = x.mid(5, 4); // y == “pine“
QString z = x.mid(5); // z == “pineapples“
1、mid()函数接受两个参数,第一个是起始位置,第二个是取串的长度。如果省略第二个参数,则会从起始位置截取到末尾。正如上面的例子显示的那样
2、函数left()和rigt()类似,都接受一个int类型的参数n,都是对字符串进行截取。不同之处在于,left()函数从左侧截取n个字符,而right()从右侧开始截取。下面是left()的例子:
1. QString x = “Pineapple“;
2. QString y = x.left(4); // y == “Pine“
三、获取字符在字符中的位置。
indexOf()
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
四、可以检测字符串是不是以某个特定的串开始或结尾。
startsWith() endsWith()
if (url.sta
length();
QString怎么去掉最后一个字符
操作方法:
string = string.left(string.length() – 1);