您现在的位置是:首页 >技术教程 >C++ 和 C 语言字符串操作整理网站首页技术教程
C++ 和 C 语言字符串操作整理
简介C++ 和 C 语言字符串操作整理
C++ std::string
操作
常见方法
操作 | 方法 |
---|---|
赋值 | = |
求长度 | size() , length() |
拼接 | + , += , append() |
访问字符 | [] , at() , front() , back() |
查找 | find() , rfind() |
提取子串 | substr() |
替换 | replace() |
插入 | insert() |
删除 | erase() |
比较 | compare() , == , < , > |
转换大小写 | transform() (需 <algorithm> ) |
去除空白 | 需自定义 trim() |
拆分字符串 | 需自定义 split() |
转换数值 | stoi() , stol() , stod() , to_string() |
判断空字符串 |
|
代码示例
#inclide <iostream>
#include <string>
int main()
{
string str1 = "helio";//创建
string str2 = "world";//创建
string str3 = str1 + str2;//字符串拼接
cout << str3 << endl;
cout << str3.size() << endl;
cout << str1.length() << endl;
cout << str1 + str2 <<endl;//拼接字符串
cout << ((str1 + str2) == "hello world") << endl;//比较
cout << str3.insert(2,"InserT") << endl;//插入insert(索引,字符串)
cout << str3 << endl;
cout << str3.erase(2,6) << endl;//删除 erasse(索引,长度)
cout << str3 << endl;
str2 += "!";//追加字符串
cout << str2 << endl;
str2.append("???");//追加字符串
cout << str2 << endl;
cout << str1[3] << endl;//str[]访问
cout << str1.at(3) << endl;// at()访问
str1[3] = 'L';//修改字符串
cout << str1.at(3) << endl;
cout << str1 << endl;
cout << str3.front() << endl;//获取首字符
cout << str3.back() << endl;//获取末字符
cout << str3.substr(5,5) << endl;//提取子串substr(起始索引,长度)
string str4 = "Hello World!";
size_t pos = str4.find("World");//find()函数查找子串,返回的pos为查找的子串World中的第一个字符W的索引,即起始索引,
/*
size_t:
- 无符号整数类型 (unsigned int)
- 不能存储负数
- 通常用于数组索引、字符串长度、内存大小
- 适用于 `sizeof()`, `std::string::find()`
int:
- 有符号整数 (signed int)
- 可以存储负数
- 适用于一般的数学计算
*/
/*
string::npos 是 size_t 类型的最大值,用于表示 `find()` 查找失败的情况。
size_t 是无符号整数类型,通常用于存储数组索引和字符串大小,不能表示负数。
*/
if(pos != string::npos)//若find()返回的Pos为 string::npos ,则意味着查找失败
{
cout << "Find at:" << pos << endl;
}
str4.replace(pos,5,"C++");//replace(起始位置,替换长度,替换内容)为替换子串的函数
cout << str4 << endl;
cout << (str1 <= str2) << endl;//比较字符串 == 、!=、<=、>=
cout << str1.compare(str2) << endl;//比较字符串 <0 表示str1 < str2
string str5 = "123";
cout << stoi(str5) << endl;//stoi() 只能解析 int 范围内的整数,如果超出范围会抛出 std::out_of_range 异常。
cout << stol("1234567") * 2 << endl;//stol将字符串转化为整数,适用于 long 类型的整数,支持更大范围的整数。
string str6 = "3.14";
float num = stod(str6) + 6.28;//stod()将字符串转化为浮点数
cout << num << endl;
cout << stod("3.18") << endl;
cout << stol(str6) * 2 << endl;
float snum = 2.33;
cout << to_string(snum) << endl;//to_string()将数值转化为字符串
cout << to_string(123.44) << endl;
string str7 = "";//empty()函数判空,空格也算不空,不信可以试试,若为空返回1,不为空返回0;
cout << (str7.empty() ? "Empty" : "Unempty") << endl;
}
C 语言 char[]
字符串操作
常见函数
操作 | 方法 |
---|---|
获取长度 | strlen(s) |
复制字符串 | strcpy(d,s) , strncpy(d,s,n) |
连接字符串 | strcat(d,s) , strncat(d,s,n) |
比较字符串 | strcmp(s1,s2) , strncmp(s1,s2,n) |
查找字符 | strchr(s,ch) , strrchr(s,ch) |
查找子串 | strstr(s1,s2) |
拆分字符串 | strtok(s,delim) |
复制内存 | memcpy(d,s,n) , memmove(d,s,n) |
字符串转整数 | atoi(s) , atof(s) |
整数转字符串 | sprintf(buf,"%d",n) |
代码示例
#include <stdio.h>
#include <string.h>
int main()
{
char str[] = "Hello,World!";
printf("Lengtn: %llu
",strlen(str));//strlen()函数计算字符串长度,包括空格
char dest[20];
strcpy(dest,"Hello World!???");//strcpy(字符串,"待复制字符串"),用于复制字符串
dest[12] = '