zoukankan      html  css  js  c++  java
  • [C/C++基础--笔试突击] 2.字符串

    概述:

      字符串是由零个或多个字符组成的有限序列。

      子串:串中任意个连续的字符组成的子序列。

      字符串是最常见和常考的一种类型,有很多演化的问题,例如最长公共子序列等,这里就不介绍了,只了解一下相关的基本知识和标准库的一些函数。

    2.1 C风格字符串

    包含两种:

    1)字符串常量:以双引号括起来的字符序列是字符串常量。为了兼容C语言,C++所有的字符串常量都由编译器自动在末尾添加一个空字符

    :字符常量'A'表示单个字符A,然后"A"是字符串常量,其表示字母A和空字符(null)两个字符。

    2)末尾添加了''的字符数组。

    C++语言通常用char*/const char*类型的指针来操纵C语言中的字符串,一般来说,我们使用指针的算术操作来遍历C风格字符串,直到到达结束符null为止。

    const char *cp = "hello world";
    while(*cp) {
    //...
    cp++;  
    }

    注:最后的''会转化为十进制的0,因此可以用while(*cp)来判断。

    举个小例子,可以以此来求得字符串的长度:

    int len(char *x) {
        char *y = x;
        while(*y++);  // 一直走到null
        return (y - x - 1); // 同类型指针相减 返回值为距离
    }

    2.2 标准库中提供的字符串处理函数

    C/C++提供了众多的字符串处理函数,下表介绍了主要的一些函数:

     strlen(s)

     返回s的长度,不包括字符串结束符null

     strcmp(s1,  s2)

     比较两个字符串s1和s2是否相同。若相等,返回0;若s1大于s2,返回正数;否则返回负数。

     strcat(s1, s2)

     将字符串s2连接到s1后,返回s1

     strcpy(s1, s2)

     将s2复制给s1,并返回s1 

     strncat(s1,s2,n)

     将s2的前n个字符连接到s1后面,并返回s1

     strncpy(s1,s2,n)

     将s2的前n个字符复制给s1,并返回s1

    再弄清楚两个容易混淆的函数:

    1)memcpy

    void *memcpy(void *dest, const void *src, size_t n);

    功能:从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中。函数返回指向dest的指针。

    2)memset

    void *memset(void *s, int ch, size_t n);

    功能:将s中前n个字节用ch替换并返回s,作用是在一段内存块中填充某个给定的值,它是对较大的结构体或数组进行清零操作最快的一种方法。

    下面写一个知识点:

    strcpy和memcpy的区别

    1.复制的内容不同。strcpy只能复制字符串,而memcpy可以复制任意内容,例如字符数组、整型、结构体、类等。

    2.复制的方法不同。strcpy不需要指定长度,遇到被复制字符串的结束符''才结束,所以容易溢出。memcpy则根据第三个参数来决定复制的长度。

    3.用途不同。通常在复制字符串的时候用strcpy,其他类型的时候用memcpy。

    字符串的基本知识就复习到这里了,字符串的实际应用时最广泛的,这就要好好的研究算法了,希望大家能记住这部分的知识~。~

    返回目录 -> C/C++基础知识概述

  • 相关阅读:
    xml 总结(一)数据岛,命名空间
    activiti designer 安装到 myeclipse
    activiti5.15 学习笔记
    goole网址IP
    form 中Enctype=multipart/form-data 的作用
    上传文件form表单enctype="multipart/form-data"传值解决办法(代原代码)
    淘宝初始化样式
    js闭包使用之处
    CSS Sprites
    iframe用的场景
  • 原文地址:https://www.cnblogs.com/TinyBobo/p/4724336.html
Copyright © 2011-2022 走看看