一些零碎的知识点不好整理,就用一篇文章记下来,每次刷题的时候总是在这些小的知识点上卡壳,多是一些基础没有打扎实导致的一些简单函数不会用。

fill函数,fill与memset函数的区别1

  • memset 函数按照字节填充某字符,在头文件<cstring>里面。

  • fill 函数按照单元赋值,将一个区间的元素都赋同一个值,在头文件<algorithm>里面。

因为memset函数按照字节填充,所以一般 memset 只能用来填充char型数组(因为只有char型占一个字节),如果填充 int 型数组,除了0-1之外其他的不能。因为只有 00000000 = 0,-1 同理,如果我们把每一位都填充「1」,会导致变成填充入「11111111」。赋值方法:

1
2
3
4
5
6
7
8
#include <iostream>
#include <cstring>
using namespace std;
int main(){
int a[20];
memset(a, 0, sizeof(a));
return 0;
}

fill函数可以赋任何值,而且使用方法特别简便,例如

  • int数组:fill(arr, arr + n, 要填入的内容);

  • vector也可以:fill(v.begin(), v.end(), 要填入的内容);

C++几种类型相互转换2

将 string 转化 int 的方法:

  • stoi 是 string 库中的函数,他的参数是 string
  • atoi 是 c 里面的函数,参数是 char* 型,因此在用 string时,必须调 c_str() 方法将其转为char*的字符串。
1
2
3
string s=“123”;
int v=atoi(s.c_str());
int u=stoi(s);

ascii码

a 的 ASCII 码 97,记二进制:0110 0001
A 的 ASCII 码 65,记二进制:0100 0001
刚好差了 32

String常用函数

https://wiki.hushhw.cn/posts/f58b376e.html

字符串切割 strtok()

C 库函数 char *strtok(char *str, const char *delim) 分解字符串 str 为一组字符串,delim 为分隔符。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <string.h>
#include <stdio.h>

int main () {
char str[80] = "This is - hushhw.cn - website";
const char s[2] = "-";
char *token;

/* 获取第一个子字符串 */
token = strtok(str, s);

/* 继续获取其他的子字符串 */
while( token != NULL ) {
printf( "%s\n", token );

token = strtok(NULL, s);
}

return(0);
}

/*
This is
hushhw.cn
website
*/