您的位置:

string截取详解

一、string截取指定字符串

string截取功能可以用于字符串的处理,例如从字符串中截取指定字符,指定位置,以及指定长度等等。其中,截取指定字符串可以使用substr函数。

    string str = "hello world";
    string substr = str.substr(6,5);

上述代码中,substr函数第一个参数是截取的起始位置,第二个参数是截取的长度。上面的代码表示从字符串"hello world"中截取第6个位置开始的长度为5的字符串,即"world"。

二、string截取字符串的右侧数据

借助substr函数,还可以对字符串进行右截取。例如我们想要得到字符串的右边3个字符,可以这样写:

    string s = "abcdefg";
    string s_right = s.substr(s.length() - 3, 3); // "efg"

其中,s.length()表示字符串s的长度,因此(s.length() - 3)表示字符串右侧第三个字符的位置,而第二个参数3表示要截取的长度。

三、string截取最后两位

和上面类似,想要得到一个字符串的最后两位,只需要调用substr函数,指定起始位置为字符串长度减二即可。

    string str = "abcdefgh";
    string str_last_two = str.substr(str.length() - 2, 2); // "gh"

四、string截取最后一个逗号

假设我们有一个字符串s,其中包含多个逗号分隔的字符串,我们想要获得这个字符串中最后一个逗号后面的内容。可以先用substr函数得到逗号的位置,然后再进行截取。

    string s = "a,b,c,d,e,f";
    auto pos = s.rfind(",");
    string res = pos == string::npos ? s : s.substr(pos + 1); // "f"

在上述代码中,rfind函数是从字符串的右侧开始查找给定字符(逗号)的位置。如果没有查找到,则返回string::npos,表示未找到。如果找到了逗号,就可以用substr函数得到逗号后面的内容。

五、string截取前八位

要截取一个字符串的前八位,可以调用substr函数,指定截取的起始位置为0,长度为8。

    string s = "abcdefgh";
    string res = s.substr(0, 8); // "abcdefg"

六、string截取前四位

如果想要截取一个字符串的前四位,同样也是使用substr函数,指定截取的长度为4,起始位置为0。

    string s = "abcdefgh";
    string res = s.substr(0, 4); // "abcd"

七、string截取指定位置

对于一个字符串,需要截取其中的一部分,可以使用substr函数。例如,如果我们想要截取一个字符串的第5个位置之后的子字符串,可以写成:

    string s = "abcdefgh";
    string res = s.substr(4); // "efgh"

八、string截取以前的内容

如果需要截取一个字符串中某个子串出现之前的内容,可以使用find函数和substr函数。例如,如果s是一个字符串,其中有一个子串"world",我们需要截取其出现之前的内容,可以这样写:

    string s = "hello world";
    auto pos = s.find("world");
    string res = pos == string::npos ? s : s.substr(0, pos); // "hello "

九、string截取后三位

如果需要截取一个字符串的后面几位,同样可以使用substr函数。例如,如果我们需要截取一个字符串的后三位,可以写成:

    string s = "abcdefgh";
    string res = s.substr(s.length() - 3); // "fgh"

十、string截取分隔符内容

如果需要从一个字符串中截取某几个分隔符之间的内容,可以用find函数和substr函数结合。假设我们有一个字符串,其中包含多个以逗号分隔的字符串。我们需要获取第三个逗号后面的内容,可以这样写:

    string s = "a,b,c,d,e,f";
    auto pos = s.find(",");
    for (int i = 0; i < 3; ++i)
    {
        pos = s.find(",", pos + 1);
        if (pos == string::npos)
        {
            break;
        }
    }
    string res = pos == string::npos ? s : s.substr(pos + 1); // "d,e,f"

在上述代码中,首先用find函数找到第一个逗号的位置,然后在循环中一直向后找逗号,直到找到第三个为止。最后,用substr函数从第三个逗号的位置开始获取字符串内容。