QT是一个跨平台的图形化类库,常用数据结构就是对C++ STL的二次封装,使其更加易用。
QString 追加/删除: 常用字符串操作类型
#include
#include
#include
#include
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
// 定义两个字符串并将其链接在一起
QString Str1 = "hello", Str2 = "lyshark",temp;
temp = Str1 + Str2;
std::cout << temp.toStdString().data() << std::endl;
std::cout << (Str1+Str2).toStdString().data() << std::endl;
// 使用append/remove 追加与移除
QString Str3 = "hello ";
Str3.append("lyshark");
Str3.push_back("test");
Str3.remove("hello");
Str3.prepend("-->");
std::cout << Str3.toStdString().data() << std::endl;
// 使用Sprintf/arg 将特定字符串连接
QString Str4;
Str4.sprintf("%s %s","Welcome","to you !");
std::cout << Str4.toStdString().data() << std::endl;
QString Str5;
Str5 = QString("%1 is age = %2 . ").arg("lyshark").arg("24");
std::cout << Str5.toStdString().data() << std::endl;
std::cout << (QString("1") + QChar('A')).toStdString().data() << std::endl;
std::cout << (QString("2") + QString('B')).toStdString().data() << std::endl;
// 实现统计字符串长度
std::cout << Str5.count() << std::endl;
std::cout << Str5.size() << std::endl;
std::cout << Str5.length() << std::endl;
// 去空格
QString Str6 = " hello lyshark welcome ! ";
Str6 = Str6.trimmed(); // 去掉首尾空格
Str6 = Str6.simplified(); // 去掉所有空格,中间连续的只保留一个
std::cout << Str6.toStdString().data() << std::endl;
Str6 = Str6.mid(2,10); // 从索引2开始向后取10
std::cout << Str6.toStdString().data() << std::endl;
//移除,1,3两个位置的字符
std::cout << (QString("123456").remove(1,3)).toStdString().data() << std::endl;
// 超过 11 个字符就保留 11 个字符,否则不足替换为 '.'
std::cout << (QString("abcdefg").leftJustified(11,'.',true)).toStdString().data() << std::endl;
std::cout << (QString::number(100,16)).toStdString().data() << std::endl; // 100 转16进制
// 转换为 16 进制,不足 8 位前面补 ‘0’
std::cout << (QString("0%1").arg(123,8,16,QLatin1Char('0'))).toStdString().data() << std::endl;
// 转为8进制
std::cout << QString("0%1").arg(QString::number(100,8)).toStdString().data() << std::endl;
std::cout << (QString("0%1").arg(QString::number(.777,'f',1))).toStdString().data() << std::endl;
// 切割字符串
std::cout << (QString("1,2,3,4,5,6").split(',')[2]).toStdString().data() << std::endl;
// 类型转换 QByteArray 转换 QString
QByteArray byte;
byte.resize(2);
byte[0]='1';
byte[1]='2';
QString strs = byte;
return a.exec();
}
QString 查询/替换: 字符串的查询,替换,扫描与切割。
#include
#include
#include
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
// 查询与替换
QString str = "hello lyshark welcome admin";
int index;
bool ref;
// 查询字符串中是否包含特定字符
ref = str.contains("lyshark",Qt::CaseInsensitive); // 不区分大小写
std::cout << ref << std::endl;
ref = str.contains("LYSHARK",Qt::CaseSensitive); // 区分大小写
std::cout << ref << std::endl;
// 判断是否以某个字符串开头或结束
ref = str.startsWith("hello",Qt::CaseInsensitive); // 判断是否hello开头
std::cout << ref << std::endl;
ref = str.endsWith("lyshark",Qt::CaseSensitive); // 判断是否lyshark结尾
std::cout << ref << std::endl;
// 从字符串中取左边/右边多少个字符
index = str.indexOf(" "); // 第一个空格出现的位置
std::cout << str.left(index).toStdString().data()<< std::endl;
index = str.lastIndexOf(" "); // 最后一个空格出现的位置
std::cout << str.right(str.size() - index - 1).toStdString().data() << std::endl;
// 替换字符串中所有的lyshark为admin
str = str.replace("lyshark","admin");
std::cout << str.toStdString().data() << std::endl;
// 字符串的截取
QString str2 = "uname,uage,usex";
std::cout << str2.section(",",0,0).toStdString().data() << std::endl;
std::cout << str2.section(",",1,1).toStdString().data() << std::endl;
QString str3 ="192.168.1.10";
std::cout << str3.left(str3.indexOf(".")).toStdString().data() << std::endl;
std::cout << str3.mid(str3.indexOf(".")+1,3).toStdString().data() << std::endl;