C/C++ 字符串操作总结(更新ing)

一.字符数组类型的字符串与字符串类型的字符串

在 C++ 中我们可以使用 字符数组 来代替字符串,但字符串与字符数组不是完全等价的。

C++字符串与字符数组区别

  • 在 C++ 中,字符串必须是以 \0 做为结尾的,但字符数组没有这个要求。

  • 字符串一定是一个 char 类型的数组,但 char 的数组未必是字符串。

  • 数字 0(和字符 ‘\0’ 等价)结尾的 char 数组 就是一个字符串,但如果 char 数组没有以数字 0 结尾,那么就不是一个字符串,只是普通字符数组,所以字符串是一种特殊的 char 数组。

C++字符串与字符数组对比详解

指定长度

char arr[5] = {'H', 'e', 'l', 'l', 'o'};

这里,我们指定了数组的长度,但数组的长度正好跟后面初始化的元素个数相等,因此,此时不会自动在最后增加 \0 结尾,因此,这里的 arr 变量 是一个字符数组,而不是字符串,现在,我们修改如下:

char arr[6] = {'H', 'e', 'l', 'l', 'o'};

此时,我们定义的 arr 变量的长度比后面初始化字符的个数多了一个,此时,会自动在最后增加了 \0,此时的 arr 是一个字符串。

不指定数组长度

char arr[] = {'H', 'e', 'l', 'l', 'o'};

这里,我们没有指定数组的长度,且没有以 \0 结尾,因此,这里的 arr 变量是一个字符数组,而不是字符串,现在,我们修改如下:

char arr[] = {'H', 'e', 'l', 'l', 'o',‘\0’};

我们在最后增加了 \0,此时的 arr 是一个字符串。

字符串遇0自动结束

char arr[] = "Hello\0world";

如果我们以字符串输出变量 arr,那么只会输出 “Hello”,因此,以字符串输出遇到 \0 会自动结束,如果使用字符数组输出,则会全部输出。

二.字符数组类型字符串的基本操作

1.定义

指定长度

char str[6]="hello";

不指定长度

char str[]="hello world";//或者char str[]="hello world\0";
char str[]="'h','e','l','l','o','\0'";

2.赋值

cin和scanf以空格/回车为分隔符:

    char str[20];
    scanf("%s",str);
    cin>>str;

gets()以回车为分隔符,可以读入空格:

char str[20];
gets(str);

中的getline();可自主控制分隔符和读入的数据长度:

cin.getline(a,100);
cin.getline(a,100,'#');'#'终止符

3.输出

printf()、cout<<输出不自带回车符,puts()输出自带回车符:

注:cin>> 和 cout<< 需要包含头文件,同时引入命名空间using namespace std;

    char str[20]="hello world";
    puts(str);
    printf("%s\n",str);
    cout<

4.字符串操作

需要包含头文件

基本操作(常用)

strcpy(p, p1) 将p1拷贝到p
strncpy(p, p1, n) 将p1中前n个字符拷贝到p
strcat(p, p1) 将p1接到p后面
strncat(p, p1, n) 将p1中前n个字符接到p后面
strlen(p) 获得字符串长度
strcmp(p, p1) 比较字符串,若p>p1,返回1,否则返回0
strcasecmp(p, p1)忽略大小写比较字符串
strchr(p, c) 在字符串p中查找指定字符,返回一个指针, 指向字符c在p中首次出现的位置, 如果没有找到, 则返回NULL
strrchr(p, c) 在字符串p中反向查找,查找字符c在字符串p中最后一次出现的位置
strstr(p, p1) 查找字符串,返回子串p1在p中首次出现位置的指针. 如果没有找到子串, 则返回NULL.
strtok(p,p1)按照p1指向的字符串中的字符(如空格),切割p指向的字符串(只切割一次)

 字符串到数值类型的转换

atoi(p) 字符串转换到 int 整型
atof(p) 字符串转换到 double 符点数
atol(p) 字符串转换到 long 整型

字符检查

isalpha() 检查是否为字母字符
isupper() 检查是否为大写字母字符
islower() 检查是否为小写字母字符
isdigit() 检查是否为数字
isspace() 检查是否为空格类型字符
ispunct() 检查是否为标点符号
isalnum() 检查是否为字母和数字

三.字符串类型字符串的基本操作(更新ing)

在使用string类时,必须包含string头文件以及using namespace std;

参考链接:C++string类常用方法_Goallegoal的博客-CSDN博客_c++ string的常用方法及其功能

四.字符串类型的转换

1.将字符串转换为字符数组

s.c_str();

2.字符数组转换为字符串

char ch [] = "ABCDEFG";
string str(ch);//或string str = ch;

转换为string后就可以用string的函数如s.substr(开始位置,字串长度)

char c[8]={‘2’, ‘0’, ‘1’, ‘8’, ‘1’, ‘2’, ‘0’, ‘3’ } 怎么获取月份

string s(c);

s.substr(4, 2);

3.将整数i转换为字符串表示形式

string s = to_string(i); 

你可能感兴趣的:(C++,大数据)