字符串【C/C++函数操作】

字符串

博文简述C/C++中常见库函数的操作。

概念

字符串即由char型数组存储一组字符的表达形式,在C++中存在string类型对字符串进行存储与操作。字符串由’\0’作为结束的标志

输入方法

char str[120] = {0};
1.scanf("%s",str);//采用scanf可使用%s读取一段字符串,字符串读入遇到空白则结尾,自动添加'\0'
2.gets(str);//在C语言中已经废弃的函数,此函数并不安全。
3.//自定义readline函数
int readline(char str[]){
    int ch,i = 0;
    while((ch = getchar())!='\n'&&ch!=EOF){//读取一行,遇到换行或者文件末尾结束读入
        str[i] = ch;
        i++;
    }
    str[i] = '\0';//手动添加'\0',字符串标志
    return i;//返回字符串长度
}
//C++ 扩充,
4.getline(std::cin,str);//从cin中读入一行字符串存在str中
5.std::cin>>str;//和scanf类似

输出方法

1.printf("%m.ns",str);//输出占m列,但只取字符串中左端n个字符。这n个字符输出在m列的右侧,左补空格。
//不加格式控制则完全输出
2.puts(str);
//C++ 扩充
3.cout<<str;

C中字符串函数

字符串间处理

#include<string.h>
char dest[120],src[120],s1[120],s2[120],sub[120],str[120];
char ch;
int n;
1. char* strcpy(dest,src);//将src中字符串复制到dest中
2. char* strncpy(dest,src,n);//将src中字符串前n个字符作为字符串复制到dest中
3. int strlen(str);//返回str字符串长度
4. char* strcat(dest,src);//将src拼接到dest的末尾
5. char* strncat(dest,src,n);//将src的前n个字符拼接到dest末尾
6. int strcmp(s1,s2);//按字典序比较s1,s2的大小(s1>s2),返回值为正数,零,负数。
7. int strncmp(s1,s2);//同strcmp比较s1,s2中前n个字符
8. char* strstr(src,sub);//返回sub在src中第一次出现的地址(指针),没有则返回NULL
9. char* strchr(src,ch);//返回字符ch在src中第一次出现的位置,没有则返回NULL
10. char* strrchr(src,ch);//ch在src中最后一次出现的位置,没有则返回NULL

字符串与数字转化

#include<stdlib.h>
char str[10];
1. int atoi(str);//对于正负+0~9的数字组成的字符串转化为整数,跳过前导空格,非数字结尾
2. double atof(str);//同atoi,返回双进度浮点数
3. long atol(str);//返回长整型数据

字符处理

#include<ctype.h>
1. int isalnum(int c);//检查字符是否为数字或字母(0~9,a~z,A~Z) 
2. int isalpha(int c);//检查字符是否为字母(a~z, A~Z) 
3. int isdigit(int c);//检查字符是否为十进制数字(0~9) 
4. int islower(int c);//检查字符是否为小写的字母(a~z) 
5. int ispunct(int c);//检查字符是否为标点符号(~`!@#$%^&*()_+-={}[]:;'“<>,./?\|等)
6. int isspace(int c);//检查字符是否为空白字符(Tab、垂直Tab、换行、换页、回车、空格) 
7. int isupper(int c);//检查字符是否为大写字母(A~Z) 
8. int isxdigit(int c);//检查字符是否为十六进制数字(0123456789ABCDEFabcdef)
9. int tolower(int c);//转化字符为小写字母
10. int toupper(int c);//转化字符为大写字母

字符串中单个字符可由取下标操作进行随即访问并修改。键盘上能够组合得到的字符均在ASCII编码中。字符串可以存储中文,但编码格式与英文不同。

C++ string内置操作

1.构造函数

string s1();//等价于s1 = ""
string s2("Hello World");//等价于s2 = "Hello World"
string s3(3,'A');//s3 = "AAA"
string s4("ABCD",2,2);//s4 = "CD"

2.长度

int str.length();//返回str长度
int str.size();
int str.capacity();//获取容量,内存大小

3.字符串拼接

string s1,s2;
1. s1+=s2;
2. s1.append(s2);
3. s1 = s1 + s2;

4.判断

string s1,s2;
s1>s2;//>,<,==,<=,>=,!=返回bool型量
s1.empty();//判空

5.查找(查找到则返回首下标,否则返回string::npos,即-1)

int find();//从前往后查找子串或字符出现的位置。
int rfind();//从后往前查找子串或字符出现的位置。
int find_first_of();//查找s1中第一次出现"abc"中任一字符的位置
int find_last_of()//从后往前查找何处出现另一个字符串中包含的字符。
int find_first_not_of()//从前往后查找何处出现另一个字符串中没有包含的字符。
int find_last_not_of()//从后往前查找何处出现另一个字符串中没有包含的字符

6.获取指定位置的子串

string substr(int n = 0, int m = string::npos) const;//函数原型
//n为子串开始的下标,m为长度。

7.替换子串

string replace(int begin,int end,string str);
//begin为被替换字符串中的首下标,end为被替换字节数,替换字符串str可由构造函数进行重载
string s1 = "12345";
string s2 = s1.replace(1,4,"abc");//s2 = "1abc"

8.删除子串[返回自身引用]

string& erase(int begin,int num);//推测
string s1 = "12345",s2 = "abscdsf";
s1.erase(0,3);//s1 = "45"
s2.erase(1);//s1 = "a"

9.插入字符串

string& insert(int index,string str);
//index:插入下标,str插入的字符串(同构造函数重载)
string s1 = "12345";
s1.insert(2,"my");//s1 = "12my345"

10.交换字符串

s1.swap(s2);

11.清除字符串

s1.clear();
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

registor11

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值