字符串操作

C++字符串操作

  • 构造函数
    1)string(const char *s) :将 string 对象初始化为 s 指向的字符串
    2)string(size_type n,char c) :创建一个包含 n 个元素的 string 对象,其中每个元素都被初始化为字符 c
    3)string(const string &str) :将一个 string 对象初始化为 string 对象 str(复制构造函数)
    4)string() :创建一个默认的 string 对象,长度为 0(默认构造函数)
// 示例代码:
string str("Hello!");  // Hello!
string str(10,'a');    // aaaaaaaaaa
string str2(str1);     // Hello!
string str;         // 创建一个空的 string 对象
  • 获取字符串长度函数size() 和length()
string str("Hello,World!");  // Hello,World!
int strLen1 = str.length();  // 12
int strLen2 = str.size();    // 12
  • string.insert() 插入字符串,函数原型如下:
string&insert(size_t pos,const string&str);   // 在位置 pos 处插入字符串 str
string&insert(size_t pos,const string&str,size_t subpos,size_t sublen); // 在位置 pos 处插入字符串 str 的从位置 subpos 处开始的 sublen 个字符
string&insert(size_t pos,const char * s);    // 在位置 pos 处插入字符串 s
string&insert(size_t pos,const char * s,size_t n); // 在位置 pos 处插入字符串 s 的前 n 个字符
string&insert(size_t pos,size_t n,char c);      // 在位置 pos 处插入 n 个字符 c
iterator insert (const_iterator p, size_t n, char c); // 在 p 处插入 n 个字符 c,并返回插入后迭代器的位置
iterator insert (const_iterator p, char c);       // 在 p 处插入字符 c,并返回插入后迭代器的位置

string.substr() 获取子串,函数原型如下:

string substr(size_t pos = 0,size_t len = npos)const;  // pos 是子字符串的起始位置(索引,第一个字符的索引为 0),len 是子串的长度。

swap() 交换两个字符串,如下:

 string str1 = "hello,world!";
 string str2 = "HELLO,WORLD!";
 str1.swap(str2);
 cout << str1 << endl;  // HELLO,WORLD!
 cout << str2 << endl;  // Hello,World!

string.erase() 元素删除操作,函数原型如下:

string& erase (size_t pos = 0, size_t len = npos);   // 删除从 pos 处开始的 n 个字符
iterator erase (const_iterator p);            // 删除 p 处的一个字符,并返回删除后迭代器的位置
iterator erase (const_iterator first, const_iterator last); // 删除从 first 到 last 之间的字符,并返回删除后迭代器的位置

string.find() 查找字符,函数原型如下:

size_type find (const string& str, size_type pos = 0) const;  // 从字符串的 pos 位置开始(若不指定 pos 的值,则默认从索引 0 处开始),查找子字符串 str。如果找到,则返回该子字符串首次出现时其首字符的索引;否则,返回  string::npos
size_type find (const char *s, size_type pos = 0) const; 
size_type find (char ch, size_type pos = 0) const; 
size_type find (const char *s, size_type pos, size_type n); // 从字符串的 pos 位置开始(若不指定 pos 的值,则默认从索引 0 处开始),查找 s 的前 n 个字符组成的子字符串。如果找到,则返回该子字符串首次出现时其首字符的索引;否则,返回 string::npos

string.rfind() ; string.rfind() 与 string.find() 方法类似,只是查找顺序不一样, string.rfind() 是从指定位置 pos (默认为字符串末尾)开始向前查找,直到字符串的首部,并返回第一次查找到匹配项时匹配项首字符的索引。
string.find_first_of()
string.find_last_of()
string.find_first_not_of()
string.find_last_not_of()

  • 其他函数:
    1、string.append() 在一个 string 对象后面附加一个 string ,如:
    string str1 = “hello,”;
    string str2 = “world!”;
    str1.append(str2); // Hello,World!
    2、string.push_back() 在一个 string 对象后面追加一个字符,如:
    string str1 = “hello,”;
    char ch= ‘A’;
    str1.push_back(ch); // Hello,A
    3、string.compare() 比较字符串的大小,如:
    1)返回 0,表示相等;
    2)返回结果小于 0,表示比较字符串中第一个不匹配的字符比源字符串小,或者所有字符都匹配但是比较字符串比源字符串短;
    3)返回结果大于 0,表示比较字符串中第一个不匹配的字符比源字符串大,或者所有字符都匹配但是比较字符串比源字符串长。
    4、empty() 判断字符串是否为空

QString 字符串操作

  • 构造函数
//函数原型
QString(const QByteArray &ba)
QString(const char *str)
QString(QString &&other)
QString(const QString &other)
QString(QLatin1String str)
QString(int size, QChar ch)
QString(QChar ch)
QString(const QChar *unicode, int size = -1)
QString()
  • append() 在字符串末尾添加字符串或字符
// 函数原型
QString &QString::append(const QString &str)
QString &QString::append(QChar ch)
QString &QString::append(const QChar *str, int len)
// 示例:
QString x = "free";
QString y = "dom";
x.append(y); // x == "freedom"
x.append(y,2); // x == "freedomdo"
  • prepend() 在字符串前面添加\插入字符串
// 函数原型
QString &QString::prepend(const QString &str)
QString &QString::prepend(QChar ch)
QString &QString::prepend(const QChar *str, int len)
// 示例代码:
QString x = "ship";
QString y = "air";
x.prepend(y); // x == "airship"
  • insert() 在字符串中指定位置插入字符或字符串
// 函数原型
QString &QString::insert(int position, const QString &str)  // 在位置索引position处,插入字符串str
QString &QString::insert(int position, QChar ch)
// 示例:
QString str = "Meal";
str.insert(1, QString("ontr")); // str == "Montreal"
  • remove() 移除指定字符或字符串
//函数原型
QString &QString::remove(int position, int n) // 根据索引删除子字符串,position表示待删除子字符串第一个字符所在的位置索引,n表示待删除子字符串长度

QString &QString::remove(QChar ch, Qt::CaseSensitivity cs = Qt::CaseSensitive) // 删除指定字符
QString &QString::remove(const QString &str, Qt::CaseSensitivity cs = Qt::CaseSensitive) // 删除指定字符串
// ch 或 str表示需要删除的字符或子字符串,cs 表示是否区分大小写,Qt::CaseSensitive表示区分大小写,Qt::CaseInsensitive表示不区分大小写
// 示例代码:
QString s = "Montreal";
s.remove(1, 4); // s == "Meal"

QString t = "Ali Baba";
t.remove(QChar('a'), Qt::CaseInsensitive); // t == "li Bb"
  • replace() 替换字符串中指定位置的内容
//函数原型
QString &QString::replace(int position, int n, const QString &after)
QString &QString::replace(int position, int n, QChar after)
// 表示将从position开始的n个字符组成的字符串,替换成after表示的字符或字符串
QString &QString::replace(QChar before, QChar after, Qt::CaseSensitivity cs = Qt::CaseSensitive)
QString &QString::replace(const QString &before, const QString &after, Qt::CaseSensitivity cs = Qt::CaseSensitive)
QString &QString::replace(QChar ch, const QString &after, Qt::CaseSensitivity cs = Qt::CaseSensitive)
// 表示将before表示的字符或字符串替换成after所表示的字符或字符串
// 示例代码:
QString x = "Say yes!";
QString y = "no";
x.replace(4, 3, y); // x == "Say no!"

QString str = "colour behaviour flavour neighbour";
str.replace(QString("ou"), QString("o")); // str == "color behavior flavor neighbor"

QString equis = "xxxxxx";
equis.replace("xx", "x"); // equis == "xxx"
  • split() 根据指定字符,将字符串拆分为子字符串,并返回这些字符串的列表
// 函数原型
QStringList QString::split(const QString &sep, Qt::SplitBehavior behavior = Qt::KeepEmptyParts, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
QStringList QString::split(QChar sep, Qt::SplitBehavior behavior = Qt::KeepEmptyParts, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
// sep为指定的拆分符,behavior 有两个参数 Qt::KeepEmptyParts表示返回的结果列表里面保留空字符,Qt::SkipEmptyParts表示返回的结果列表里面不保留空字符

QStringList QString::split(const QRegExp &rx, Qt::SplitBehavior behavior = Qt::KeepEmptyParts) const
QStringList QString::split(const QRegularExpression &re, Qt::SplitBehavior behavior = Qt::KeepEmptyParts) const
// 示例代码:
QString str = "abc";
auto parts = str.split(QString()); // parts: {"", "a", "b", "c", ""}

QString str = "/a/b/c/";
auto parts = str.split(QString('/'));// parts: {"", "a", "b", "c", ""}

QString str = "/a/b/c/";
auto parts = str.split(QString('/'),Qt::SkipEmptyParts);// parts: {"a", "b", "c"}
  • mid() 返回字符串的一个子字符串
// 函数原型:
QString QString::mid(int position, int n = -1) const // position为开始的索引位置,n为字符串长度
 // 如果位置索引超过字符串的长度,则返回空字符串。如果从给定位置开始的字符串中可用的字符少于n个,或者如果n为-1(默认值),则函数将返回指定位置可用的所有字符。
// 应用实例:
QString x = "Nine pineapples";
QString y = x.mid(5, 4);            // y == "pine"
QString z = x.mid(5);               // z == "pineapples"
  • indexOf() 获取子字符串或字符在字符串中的位置索引,返回的是第一个匹配的位置索引值
// 函数原型:
int QString::indexOf(QLatin1String str, int from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const // str表示需要查找的字符串,from 表示开始检索的起始位置
int QString::indexOf(QChar ch, int from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
int QString::indexOf(const QString &str, int from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
//  Qt::CaseSensitivity cs = Qt::CaseSensitive 表示区分大小写,Qt::CaseInsensitive表示不区分大小写
// 示例:
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); 
  • swap() 交换字符串
// 函数原型:
void QString::swap(QString &other)
// 示例:
QString str1 = "hehe"
QString str2 = "haha"
str1.swap(str2 ) // str1 == "haha",str2 == "hehe"
  • compare() 比较字符串大小
// 函数原型:
int QString::compare(const QString &s1, const QString &s2, Qt::CaseSensitivity cs = Qt::CaseSensitive)
// 示例:
int x = QString::compare("aUtO", "AuTo", Qt::CaseInsensitive);// x == 0
int y = QString::compare("auto", "Car", Qt::CaseSensitive);   // y > 0
int z = QString::compare("auto", "Car", Qt::CaseInsensitive); // z < 0
  • isEmpty() 判断字符串是否为空
// 函数原型
bool QString::isEmpty() const
// 示例:
QString().isEmpty();            // returns true
QString("").isEmpty();          // returns true
QString("x").isEmpty();         // returns false
QString("abc").isEmpty();       // returns false
  • isNull() 判断字符串是否为NULL
// 函数原型
bool QString::isNull() const
// 示例:
QString().isNull();             // returns true
QString("").isNull();           // returns false
QString("abc").isNull();        // returns false
  • endsWith() 判断字符串是否也某一子字符串或字符结尾
//函数原型:
bool QString::endsWith(const QString &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
// 示例:
QString str = "Bananas";
str.endsWith("anas");         // returns true
str.endsWith("pple");         // returns false
  • startsWith() 判断字符串是否也某一子字符串或字符开始
//函数原型:
bool QString::startsWith(const QString &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
QString str = "Bananas";
str.startsWith("Ban");     // returns true
str.startsWith("Car");     // returns false
  • 其他函数:
  • push_back() ,将给定的其他字符串追加到此字符串的末尾。它相当于 append(),函数原型:void QString::push_back(const QString &other)
  • push_front() 将给定的其他字符串前置到此字符串的开头。它相当于prepend(),函数原型:void QString::push_front(const QString &other)
  • length() 获取字符串长度,函数原型: int QString::length() const
  • size() 获取字符串大小,函数原型: int QString::size() const
    QString str = “World”;
    int n = str.size(); // n == 5
    str.data()[0]; // returns ‘W’
    str.data()[4]; // returns ‘d’
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值