IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C/C++ 字符串操作总结(更新ing) -> 正文阅读

[C++知识库]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);

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

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

3.输出

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

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

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

4.字符串操作

需要包含头文件<string.h>或<cstring>

基本操作(常用)

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++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-07-17 16:02:42  更:2022-07-17 16:03:12 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/12 8:49:28-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码