C++常用函数语法

memset()函数

memset 函数是内存赋值函数,用来给某一块内存空间进行赋值的。 其原型是:void* memset(void *_Dst, int _Val, size_t _Size)

_Dst是目标起始地址,_Val是要赋的值,_Size是要赋值的字节数。

例1:

   char str[9];
   我们用memset给str初始化为“00000000”,用法如下:
   memset(str,0,8); 

注意,memset是逐字节 拷贝的。

例2:

   int num[8];
   我们用memset给str初始化为{1,1,1,1,1,1,1,1},
   memset(num,1,8);//这样是不对的
 一个int是4个字节的,8个int是32个字节,所以首先要赋值的长度就不应该为8而是32。
 因为memset是 逐字节 拷贝,以num为首地址的8字节空间都被赋值为1,
 即一个int变为0X00000001 00000001 00000001 00000001,显然,把这个数化为十进制不会等于1的。

在这里插入图片描述

2.strcpy和memcpy主要有以下3方面的区别。
2.1、复制的内容不同。strcpy只能复制字符串,而memcpy可以复制任意内容,例如字符数组、整型、结构体、类等。
2.2、复制的方法不同。strcpy不需要指定长度,它遇到被复制字符的串结束符"\0"才结束,所以容易溢出。memcpy则是根据其第3个参数决定复制的长度。
2.3、用途不同。通常在复制字符串时用strcpy,而需要复制其他类型数据时则一般用memcpy。
3.如果目标数组destin本身已有数据,执行memcpy()后,将覆盖原有数据(最多覆盖n)。如果要追加数据,则每次执行memcpy后,要将目标数组地址增加到你要追加数据的地址。
注意:source和destin都不一定是数组,任意的可读写的空间均可。

sprintf_s是C++标准库中的一个函数,用于将格式化的字符串写入到一个缓冲区中。它的使用方法如下:

#include <cstdio>
int main() {
    
    
    char buffer[100] = {
    
    '1','2'}; // 定义一个缓冲区
    int num = 123; // 要写入的数字
    const char* format = "The number is %d"; // 格式化字符串
    // 将num写入缓冲区中,并按照指定格式输出
    sprintf_s(buffer, sizeof(buffer), format, num);
    printf("%s", buffer); // 输出缓冲区中的字符串
    return 0;
}

字符串的插入和删除

 		string str1 = "1234567890";
        cout << str1 << endl;
        string tmp = "hello";
        str1.insert(2, tmp);
        cout << str1 << endl;
        str1.erase(2, tmp.size());  // 删除tmp
        cout << str1 << endl;
        str1.erase();  //  清空str1
        cout << str1.size() << endl;
        cout << str1 << endl;

字符串替换解析

        string res = "hello world";
        string tmp = "12345";
        res.replace(1, tmp.size(), tmp); // h12345world
        cout << res << endl;

字符串查询解析

      string str1 = "ehhe:haha:xixi:haha:heihei";
      string tmp = "haha";
      cout<<str1.find(tmp)<<endl;             // 5
      cout<<str1.find(tmp,10)<<endl;    // 15

      cout<<str1.compare("lala")<<endl;//-1
      cout<<str1.compare("eh")<<endl;//   24
      cout<<str1.compare("ah")<<endl;//   1

substr函数

s.substr(pos, n)
返回一个string,包含s中从pos开始的n个字符的拷贝(pos的默认值是0,n的默认值是s.size() - pos,即不加参数会默认拷贝整个s)
若pos的值超过了string的大小,则substr函数会抛出一个out_of_range异常;若pos+n的值超过了string的大小,则substr会调整n的值,只拷贝到string的末尾

      string str1 = "12345678";
      string str2 = str1.substr(5, 6);
      cout << str1 << endl;  // 12345678
      cout << str2 << endl;  // 678

猜你喜欢

转载自blog.csdn.net/weixin_45717907/article/details/130669204