C 语言风格的字符串
字符串通常是以字符数组或字符指针的形式表示的。
字符串以空字符('\0')结尾!!!
两种形式:
(1)字符指针形式的字符串
char str[] = "Hello C++";
(2)字符数组形式的字符串
char *ptr = "Hello C++";
C风格字符串的运算
运算需要使用string函数,需要加入头文件<string.h>
字符串长度
size_t strlen(const char *s): 返回字符串s的长度,不包括结尾的空字符。
字符串拷贝
char *strcpy(char *dest, const char *src): 把src所指向的字符串复制到dest。
char *strncpy(char *dest, const char *src, size_t n): 把src所指向的字符串的前n个字符复制到dest。
strcpy 函数在 C 语言中用于将一个字符串复制到另一个字符串中,并且会覆盖目标字符串中的内容。
字符串连接
char *strcat(char *dest, const char *src): 把src所指向的字符串追加到dest所指向的字符串的结尾。
char *strncat(char *dest, const char *src, size_t n): 把src所指向的字符串的前n个字符追加到dest所指向的字符串的结尾。
字符串比较
int strcmp(const char *s1, const char *s2): 比较s1和s2。
int strncmp(const char *s1, const char *s2, size_t n): 比较s1和s2的前n个字符。
int strcasecmp(const char *s1, const char *s2): 比较s1和s2,不区分大小写(在某些平台上可用,但不是C标准的一部分)。
查找字符串中的字符或子串
char *strchr(const char *s, int c): 在字符串s中查找第一次出现字符c的位置。
char *strrchr(const char *s, int c): 在字符串s中查找最后一次出现字符c的位置。
char *strstr(const char *s1, const char *s2): 在字符串s1中查找第一次出现子串s2的位置。
其他函数
void *memchr(const void *s, int c, size_t n): 在内存的前n个字节中查找第一次出现值为c的位置。
int memcmp(const void *s1, const void *s2, size_t n): 比较内存区域s1和s2的前n个字节。
void *memcpy(void *dest, const void *src, size_t n): 从源内存块src复制n个字节到目标内存块dest。
void *memmove(void *dest, const void *src, size_t n): 从源内存块src复制n个字节到目标内存块dest,即使源和目标内存块重叠也安全。
这些函数如果想要在C++中运用的话需要加上头文件即可使用
#include<cstring>
C++语言风格的字符串
(使用string字符串更加便捷,安全)
std::string 是一个类,它定义在 <string> 头文件中,用于表示和操作字符串
std::vector<char>的功能增强版就是std::string
使用string和其成员函数需添加头文件的#include<string>
string定义字符串
格式:std::string 字符串名;
string还可以定义字符串数组
格式:std::string 字符串数组名(数组大小);
string类的初始化
可以用=或者{}进行赋值,可以进行相同连续的赋值
#include <iostream>
#include <string>
int main()
{
std::string str1; // 创建一个空字符串
std::string str2 = "Hello"; // 使用字符串字面量初始化
std::string str3(str2); // 使用另一个字符串对象初始化
std::string str4(5, 'c'); // 创建包含5个字符'c'的字符串
return 0;
}
相对于C风格的字符串运算string的运算更加简便和安全
string类的常用操作
连接
使用 + 运算符或 append() 方法连接字符串。
std::string str1 = "Hello";
std::string str2 = "C++";
std::string str3 = str1 + " " + str2; // "Hello C++"
str1.append(" C++"); // str1 现在也是 "Hello C++"
比较
直接使用比较运算符比较字符串。
if (str1 == str2)
{
// 字符串相等
} else if (str1 < str2)
{
// str1 小于 str2
}
访问字符
使用下标运算符或 at() 方法访问特定位置的字符。
char ch = str1[0]; // 获取第一个字符
char ch2 = str1.at(0);
// 同样获取第一个字符,但会进行范围检查
//at不会使用溢出
子字符串查找
使用 find() 方法查找子字符串的位置。
size_t pos = str1.find("World");
// 返回子字符串在 str1 中的位置,如果没找到则返回 std::string::npos
修改字符串
使用 replace() 方法替换子字符串,或使用赋值运算符修改特定位置的字符。
str1.replace(pos, 5, "C++"); // 从 pos 开始,替换 5 个字符为 "C++"
str1[0] = 'h'; // 修改第一个字符为 'h'
大小
使用 size() 或 length() 方法获取字符串的长度。
size_t len = str1.size(); // 获取字符串长度
size_t len = str.length(); // 获取字符串的长度
插入和删除
使用 insert() 方法在字符串中插入字符或子字符串,使用 erase() 方法删除字符或子字符串。
str1.insert(0, "Hi "); // 在字符串开头插入 "Hi "
str1.erase(0, 2); // 删除前两个字符
其他功能
std::string 还提供了其他方法,如 substr()(获取子字符串)、swap()(交换两个字符串的内容)等。
标签:std,const,string,str1,C++,C语言,char,字符串 From: https://blog.csdn.net/2301_80158456/article/details/136835128