QString
是 Qt 框架中用于表示字符串的一个类。它提供了丰富的功能来处理 Unicode 字符串,使得国际化和本地化的应用程序开发更加简单。QString
与标准 C++ 的 std::string
类似,但提供了更多与 Unicode 和国际化相关的功能。
代码演示
isNull()
用途: isNull()
函数用于检查对象是否被初始化。对于字符串类(如 QString
),一个 isNull
的字符串是那个在声明时没有被赋予任何值的字符串。它不同于一个空字符串。
返回值: 如果对象没有被初始化,则返回 true
;否则返回 false
。
isEmpty()
用途: isEmpty()
函数用于检查对象是否为空。对于字符串类,空意味着字符串的长度为 0。注意一个 isNull
的字符串也被认为是 isEmpty
,但是一个 isEmpty
的字符串不一定是 isNull
。
返回值: 如果对象为空(如字符串长度为 0),则返回 true
;否则返回 false
。
基本形式
QString::arg(const QString &a, ...)
QString::arg(int a, int fieldWidth = 0, int base = 10, QChar fillChar = ' ')
a
的长度小于这个宽度,结果会用 fillChar
填充。浮点数格式化
QString::arg(double a, int fieldWidth = 0, char format = 'g', int precision = -1, QChar fillChar = ' ')
'e'
、'E'
、'f'
、'g'
、'G'
)。这决定了数字是使用指数形式还是固定小数点形式等。字符串填充
QString::arg(const QString &a, int fieldWidth, QChar fillChar)
整形可以转换成浮点型 但是浮点型字符串不能转换成整型
基本用法
indexOf()
函数的最基本用法是查找一个子字符串在 QString
中的第一次出现的位置。如果找到了子字符串,它返回子字符串的第一个字符的索引;如果没有找到,则返回 -1。
带起始位置的搜索
你还可以指定搜索的起始位置。这对于在字符串中多次查找相同的子字符串很有用
QString str = "Hello, world! Hello, Qt!";
int index = str.indexOf("Hello", 5); // 从索引 5 开始搜索,返回 14
区分大小写
默认情况下,indexOf()
在搜索时是区分大小写的。但是,你可以通过传递一个额外的参数来改变这个行为,使搜索变得不区分大小写。
QString str = "Hello, World!";
int index = str.indexOf("world", 0, Qt::CaseInsensitive); // 返回 7
使用正则表达式
indexOf()
还有一个重载版本,它接受一个 QRegExp
或 QRegularExpression
对象作为参数,允许你使用正则表达式来进行复杂的搜索。
chop(int n)
方法从字符串的末尾移除最后 n
个字符。这个操作是在原字符串上进行的,意味着它会改变原始的 QString
对象。
n
的值大于字符串的长度,那么整个字符串会被清空。chop()
方法不返回新字符串,而是直接修改原字符串。QString
类的 right
函数用于从字符串的末尾提取一个子字符串。这个函数很有用,特别是当你需要获取字符串右侧的一定数量的字符时。
代码演示
replace()
方法是 Qt 中用于替换字符串中的字符或子字符串的强大工具。这个方法提供了多种重载形式,允许你用不同的方式来替换字符串中的内容,包括使用简单的字符替换、子字符串替换,甚至使用正则表达式进行复杂的模式匹配和替换。
QStringList QString::split(const QString &separator, Qt::SplitBehavior splitBehavior = Qt::KeepEmptyParts, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
Qt::KeepEmptyParts
会保留空的子字符串,而 Qt::SkipEmptyParts
会在结果中省略它们。在正则表达式中,中括号 []
用来定义一个字符集合,称为“字符类”。当您将字符放在中括号内时,这意味着正则表达式将匹配该集合中的任意单个字符。
当你在代码中使用中文字符串时,可能会遇到乱码问题。这通常是因为字符串在编码、编译或运行时没有正确处理。使用 QStringLiteral
可以确保字符串字面量在编译时被正确处理为 UTF-16 编码,这是 QString
内部使用的格式。
qtcreator源码本身就是utf-8格式
vs默认是GBK
#pragma execution_character_set
是一个编译器特定的预处理指令,主要用于指定源代码文件中字符串字面量的编码。这个指令主要在 Visual Studio 和一些基于 Microsoft 编译器的环境中使用。
当你的源代码中包含非ASCII字符,如中文、日文或其他多字节字符集时,这个指令可以确保编译器正确地理解和编码这些字符。通常,源代码文件是以特定的编码(如 UTF-8、GBK 等)保存的,但编译器默认可能不识别这种编码。使用 #pragma execution_character_set
可以指定编译器在编译代码时应使用的字符集编码。
QString::fromLocal8Bit
是 Qt 框架中的一个函数,用于将本地8位编码的字节字符串转换为 QString
。这个函数在处理那些以系统本地编码(而非UTF-8)存储的字符串时非常有用,尤其是在处理与系统的交互或旧的数据文件