📜  带有示例的C / C++中常用的String函数

📅  最后修改于: 2021-05-30 16:28:14             🧑  作者: Mango

C语言中的字符串:字符串定义为字符数组。字符数组和字符串之间的区别是字符串以特殊字符’\ 0’终止。

一些最常用的String函数是:

  • strcat :strcat()函数会将源字符串的副本附加到目标字符串的末尾。 strcat()函数采用两个参数:
    1)目的
    2)src
    它将源字符串的副本追加到目标字符串。 dest末尾的终止字符被src的第一个字符替换。
    返回值: strcat()函数返回目标字符串的指针dest。
    // CPP program to demonstrate
    // strcat
    #include 
    #include 
    using namespace std;
    int main()
    {
        char dest[50] = "This is an";
        char src[50] = " example";
      
        strcat(dest, src);
        cout << dest;
        return 0;
    }
    
    输出:
    This is an example
    
  • strrchr :在C / C++中,strrchr()是用于字符串处理的预定义函数。 cstring是字符串函数所需的头文件。

    此函数返回一个指针,该指针指向字符串最后一次出现的字符。
    我们要查找的最后一个出现的字符作为函数的第二个参数传递,而我们必须在其中找到该字符的字符串作为函数的第一个参数传递。
    句法

    char *strrchr(const char *str, int c) 
    

    在这里,str是字符串,c是要定位的字符。它作为int促销传递,但在内部转换回char。

    例子:

    // C code to demonstrate the working of
    // strrchr()
      
    #include 
    #include 
      
    // Driver function
    int main()
    {
      
        // initializing variables
        char st[] = "GeeksforGeeks";
        char ch = 'e';
        char* val;
      
        // Use of strrchr()
        // returns "ks"
        val = strrchr(st, ch);
      
        printf("String after last %c is :  %s \n",
               ch, val);
      
        char ch2 = 'm';
      
        // Use of strrchr()
        // returns null
        // test for null
        val = strrchr(st, ch2);
      
        printf("String after last %c is :  %s ",
               ch2, val);
      
        return (0);
    }
    
    输出:
    String after last e is :  eks 
    String after last m is :  (null)
    
  • strcmp :strcmp()是内置库函数,在< 字符串.h>头文件中声明。此函数将两个字符串作为参数,然后按字典顺序比较这两个字符串。

    语法::

    int strcmp(const char *leftStr, const char *rightStr );
    

    在上述原型中,函数srtcmp将两个字符串作为参数,并根据字符串的比较返回一个整数值。

    • 的strcmp()的两个字符串字典顺序比较意味着它由字符从第一个字符开始,直到在两个字符串的字符是等于或遇到NULL字符开始比较字符。
    • 如果两个字符串中的第一个字符相等,则此函数将检查第二个字符,如果也相等,则将检查第三个字符,依此类推
    • 这一过程将继续,直到字符串中的字符为NULL或字符是不平等的。
    // C program to illustrate
    // strcmp() function
    #include 
    #include 
      
    int main()
    {
      
        char leftStr[] = "g f g";
        char rightStr[] = "g f g";
      
        // Using strcmp()
        int res = strcmp(leftStr, rightStr);
      
        if (res == 0)
            printf("Strings are equal");
        else
            printf("Strings are unequal");
      
        printf("\nValue returned by strcmp() is:  %d", res);
        return 0;
    }
    
    输出:
    Strings are equal
    Value returned by strcmp() is:  0
    
  • strcpy :strcpy()是C / C++中的标准库函数,用于将一个字符串复制到另一个字符串。在C中,它存在于字符串.h头文件中,而在C++中,它存在于cstring头文件中。

    句法:

    char* strcpy(char* dest, const char* src);
    

    参数:此方法接受以下参数:

    • dest :指向要在其中复制内容的目标数组的指针。
    • src:将被复制的字符串。

    返回值:将源字符串复制到目标字符串,strcpy()函数将返回一个指向目标字符串的指针。

    下面的程序解释了此库函数的不同用法:

    // C program to illustrate
    // strcpy() function ic C/C++
    #include 
    #include 
      
    int main()
    {
        char str1[] = "Hello Geeks!";
        char str2[] = "GeeksforGeeks";
        char str3[40];
        char str4[40];
        char str5[] = "GfG";
      
        strcpy(str2, str1);
        strcpy(str3, "Copy successful");
        strcpy(str4, str5);
        printf("str1: %s\nstr2: %s\nstr3: %s\nstr4: %s\n",
               str1, str2, str3, str4);
        return 0;
    }
    
    输出:
    str1: Hello Geeks!
    str2: Hello Geeks!
    str3: Copy successful
    str4: GfG
    
  • strlenstrlen()函数计算给定字符串的长度。strlen()函数在字符串.h头文件中定义。它不计算空字符“ \ 0”。

    句法:

    int strlen(const char *str);
    

    范围:

    • str:它代表我们必须找到其长度的字符串变量。

    返回值:该函数返回传递的字符串的长度。

    下面的程序说明了C语言中的strlen()函数:

    范例1:-

    // c program to demonstrate
    // example of strlen() function.
      
    #include 
    #include 
      
    int main()
    {
        char ch[] = { 'g', 'e', 'e',
                      'k', 's', '\0' };
      
        printf("Length of string is: %lu",
               strlen(ch));
      
        return 0;
    }
    
    输出:
    Length of string is: 5
    
  • strncat :在C / C++中,strncat()是用于字符串处理的预定义函数。 字符串.h是字符串函数所需的头文件。

    该函数将以上n从字符串的字符指向由src到字符串的末尾由DEST加上终止空字符的指向。字符串(src)的初始字符将覆盖字符串(dest)末尾的Null字符。因此,字符串的长度(dest)变为strlen(dest)+ n。但是,如果字符串(src)的长度小于n ,则仅复制直到终止空字符的内容,并且字符串(dest)的长度变为strlen(src)+ strlen(dest)。

    该行为是未定义的,如果

    • 字符串重叠。
    • dest数组的大小不足以附加src的内容。

    句法:

    char *strncat(char *dest, const char *src, size_t n)
    

    参数:此方法接受以下参数:

    • dest :我们要附加的字符串。
    • src :要从中追加’n’个字符的字符串。
    • n :表示要附加的最大字符数。 size_t是无符号整数类型。

    返回值: strncat()函数应将指针返回到字符串(目标)。

    程序:

    // C, C++ program demonstrate functionality of strncat()
    #include 
    #include 
      
    int main()
    {
      
        // Take any two strings
        char src[50] = "efghijkl";
        char dest[50] = "abcd";
      
        // Appends 5 character from src to dest
        strncat(dest, src, 5);
      
        // Prints the string
        printf("Source string : %s\n", src);
        printf("Destination string : %s", dest);
      
        return 0;
    }
    
    输出:
    Source string : efghijkl
    Destination string : abcdefghi
    
  • strncmpstd :: strncmp()函数从字符比较两个以null结尾的字符串,并根据结果返回一个整数。
    • 该函数有两个字符串和一个数NUM作为参数,并在两个字符串的最开始的num个字节的比较。
    • num最多应等于最长字符串的长度。如果将num定义为大于字符串长度,则将进行比较,直到两个字符串的null-character(’\ 0’)为止。
    • 此函数按字典顺序比较两个字符串。它从每个字符串的第一个字符开始比较。如果它们彼此相等,则继续并比较每个字符串的下一个字符,依此类推。
    • 比较过程将一直终止,直到达到一个终止字符串或两个字符串中的num个字符为止。

    句法 :

    int strncmp(const char *str1, const char *str2, size_t count);
    
    Parameters:
    str1 and str2: C string to be compared.
    count: Maximum number of characters to compare.
     size_t is an unsigned integral type.
    
    Return Value: 
    Value                               Meaning
    Less than zero                      str1 is less than str2.
    Zero                                str1 is equal to str2.
    Greater than zero                   str1 is greater than str2.
    

    例子:

    // C, C++ program to demonstrate
    // functionality of strncmp()
      
    #include 
    #include 
      
    int main()
    {
        // Take any two strings
        char str1[10] = "aksh";
        char str2[10] = "akash";
      
        // Compare strings using strncmp()
        int result = strncmp(str1, str2, 4);
      
        if (result == 0) {
            // num is the 3rd parameter
            // of strncmp() function
            printf("str1 is equal to str2 upto num characters\n");
        }
        else if (result > 0)
            printf("str1 is greater than str2\n");
        else
            printf("str2 is greater than str1\n");
      
        printf("Value returned by strncmp() is: %d",
               result);
      
        return 0;
    }
    
    输出:
    str1 is greater than str2
    Value returned by strncmp() is: 18
    
  • strncpy :strncpy()函数类似于strcpy()函数,不同之处在于最多复制了src个n字节。如果src的前n个字符中没有NULL字符,则放置在dest中的字符串将不会以NULL终止。如果src的长度小于n,则strncpy()将另外的NULL字符写入dest以确保总共写入了n个字符。

    句法:

    char *strncpy( char *dest, const char *src, size_t n )

    参数:该函数接受上述和以下描述的两个参数:

    • src:将被复制的字符串。
    • dest:指向要在其中复制内容的目标数组的指针。
    • n:从src复制到dest的前n个字符。

    返回值:返回指向目标字符串的指针。

    例子:

    // C Program  to illustrate the
    // strcpy() function in C/C++
    #include 
    #include 
    int main()
    {
        char src[] = "geeksforgeeks";
      
        // The destination string size is 14.
        char dest[14];
      
        // copying n bytes of src into dest.
        strncpy(dest, src, 14);
        printf("Copied string: %s\n", dest);
      
        return 0;
    }
    
    输出:
    Copied string: geeksforgeeks
    
  • strrchr :C / C++中的strrchr()函数查找字符串字符的最后一次出现。它返回一个指向字符串最后一次出现的指针。终止的空字符被视为C字符串的一部分。因此,还可以定位它以检索到字符串末尾的指针。它在cstring头文件中定义。
    句法 :
    const char* strrchr( const char* str, int ch )
                or
    char* strrchr( char* str, int ch )
    

    参数:该函数采用两个强制性参数,如下所述:

    • str:指定要搜索的以空终止的字符串的指针。
    • ch:指定要搜索的字符。

    返回值:该函数返回一个指针,指向ch的字符串中的最后一个位置,如果通道被发现。如果未找到,则返回空指针。

    下面的程序说明了上述函数:

    程序1:

    // C code to demonstrate the working of
    // strrchr()
      
    #include 
    #include 
      
    // Driver function
    int main()
    {
      
        // initializing variables
        char st[] = "GeeksforGeeks";
        char ch = 'e';
        char* val;
      
        // Use of strrchr()
        // returns "ks"
        val = strrchr(st, ch);
      
        printf("String after last %c is : %s \n",
               ch, val);
      
        char ch2 = 'm';
      
        // Use of strrchr()
        // returns null
        // test for null
        val = strrchr(st, ch2);
      
        printf("String after last %c is : %s ",
               ch2, val);
      
        return (0);
    }
    
    输出:
    String after last e is : eks 
    String after last m is : (null)
    
要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程”