C语言的标准库中包含了一个头文件
,该头文件提供了一系列字符串处理函数的声明和定义。以下是一些常用的函数:
strcpy(dest, src)
。将源字符串 src
复制到目标字符串 dest
,包括字符串结束符 \0
。#include
#include
int main() {
char source[] = "Hello, world!";
char destination[20];
strcpy(destination, source);
printf("Source: %s\n", source);
printf("Destination: %s\n", destination);
return 0;
}
输出结果:
Source: Hello, world!
Destination: Hello, world!
strcat(dest, src)
。将源字符串 src
连接到目标字符串 dest
的末尾,结果保存在 dest
中,同时返回 dest
。#include
#include
int main() {
char destination[20] = "Hello";
char source[] = ", world!";
strcat(destination, source);
printf("String after concatenation: %s\n", destination);
return 0;
}
输出结果:
String after concatenation: Hello, world!
strcmp(str1, str2)
。比较字符串 str1
和 str2
,返回一个整数值表示比较结果。如果返回值为负数,则 str1
小于 str2
;如果返回值为正数,则 str1
大于 str2
;如果返回值为 0
,则 str1
等于 str2
。#include
#include
int main() {
char str1[] = "apple";
char str2[] = "banana";
int result = strcmp(str1, str2);
if (result < 0) {
printf("%s is less than %s\n", str1, str2);
} else if (result > 0) {
printf("%s is greater than %s\n", str1, str2);
} else {
printf("%s is equal to %s\n", str1, str2);
}
return 0;
}
输出结果:
apple is less than banana
strlen(str)
。返回字符串 str
的长度,不包括字符串结束符 \0
。#include
#include
int main() {
char str[] = "Hello, world!";
int length = strlen(str);
printf("Length of the string: %d\n", length);
return 0;
}
输出结果:
Length of the string: 13
strchr(str, ch)
。在字符串 str
中查找字符 ch
的第一次出现,并返回该字符的指针。如果未找到字符,则返回 NULL
。#include
#include
int main() {
char str[] = "Hello, world!";
char ch = 'o';
char* result = strchr(str, ch);
if (result != NULL) {
printf("Character '%c' found at position: %ld\n", ch, result - str);
} else {
printf("Character '%c' not found\n", ch);
}
return 0;
}
输出结果:
Character ‘o’ found at position: 4
strtok(str, delimiters)
。将字符串 str
按照分隔符 delimiters
进行分割,并返回分割后的子字符串。#include
#include
int main() {
char str[] = "Hello,world,how,are,you";
const char delimiters[] = ",";
char* token = strtok(str, delimiters);
while (token != NULL) {
printf("%s\n", token);
token = strtok(NULL, delimiters);
}
return 0;
}
输出结果:
Hello
world
how
are
you
C++ 中有一个名为 std::string
的标准库类,它提供了处理字符串的功能。要使用 std::string
类,需要包含头文件
。
std::string
对象。std::string str1; // 创建一个空字符串
std::string str2 = "Hello, world!"; // 创建并初始化一个字符串
std::string str3("Welcome"); // 使用字符串字面值创建字符串
+
运算符或者 append()
函数进行字符串拼接。std::string result = str1 + str2;
#include
#include
int main() {
std::string str1 = "Hello";
std::string str2 = " world!";
std::string result = str1 + str2;
std::cout << "Concatenated string: " << result << std::endl;
return 0;
}
结果输出:
Concatenated string: Hello world!
#include
#include
int main() {
std::string str1 = "Hello";
std::string str2 = " world!";
str1.append(str2);
std::cout << "Concatenated string: " << str1 << std::endl;
return 0;
}
结果输出:
Concatenated string: Hello world!
length()
或 size()
成员函数获取字符串的长度。int length = str.length();
#include
#include
int main() {
std::string str = "Hello, world!";
int length = str.length();
std::cout << "Length of the string: " << length << std::endl;
return 0;
}
输出结果:
Length of the string: 13
#include
#include
int main() {
std::string str = "Hello, world!";
int length = str.size();
std::cout << "Length of the string: " << length << std::endl;
return 0;
}
输出结果:
Length of the string: 13
[] 运算符
或 at()
成员函数来访问字符串中的单个字符。char ch = str[0]; // 访问第一个字符
char ch2 = str.at(2); // 访问第三个字符
#include
#include
int main() {
std::string str = "Hello, world!";
char firstChar = str[0];
char lastChar = str[str.length() - 1];
std::cout << "First character: " << firstChar << std::endl;
std::cout << "Last character: " << lastChar << std::endl;
return 0;
}
输出结果:
First character: H
Last character: !
==、!=、<、>、<=、>= 运算符
或者 compare() 函数
对字符串进行比较。if (str1 == str2) {
// 字符串相等
}
#include
#include
int main() {
std::string str1 = "Hello";
std::string str2 = "World";
int result = str1.compare(str2);
if (result == 0) {
std::cout << "Strings are equal." << std::endl;
} else if (result < 0) {
std::cout << "str1 is less than str2." << std::endl;
} else {
std::cout << "str1 is greater than str2." << std::endl;
}
return 0;
}
输出结果:
str1 is less than str2.
find()
成员函数或者 find_first_of()
函数在字符串中查找子字符串的位置。size_t pos = str.find("world"); // 查找 "world" 的位置
#include
#include
int main() {
std::string str = "Hello, world!";
std::string subStr = "world";
size_t position = str.find(subStr);
if (position != std::string::npos) {
std::cout << "Substring found at position: " << position << std::endl;
} else {
std::cout << "Substring not found." << std::endl;
}
return 0;
}
输出结果:
Substring found at position: 7
在上述示例中,我们声明了一个 std::string 类型的字符串变量 str,赋值为 “Hello, world!”。然后,声明了一个 std::string 类型的子字符串变量 subStr,赋值为 “world”。接下来,使用 find() 函数在字符串 str 中查找子字符串 subStr 的位置。如果找到了子字符串,find() 函数返回子字符串的起始位置;如果未找到子字符串,find() 函数返回 std::string::npos。在示例中,我们判断返回值是否等于 std::string::npos,如果不等于,则输出子字符串的位置。
#include
#include
int main() {
std::string str = "Hello, world!";
std::string subStr = "ow";
size_t position = str.find_first_of(subStr);
if (position != std::string::npos) {
std::cout << "Substring found at position: " << position << std::endl;
} else {
std::cout << "Substring not found." << std::endl;
}
return 0;
}
输出结果:
Substring found at position: 4
在上述示例中,我们使用 find_first_of() 函数在字符串 str 中查找子字符串 subStr 中的任意一个字符的位置。与 find() 函数不同,find_first_of() 函数返回的是子字符串中任意一个字符在原字符串中的第一个匹配位置。在示例中,我们判断返回值是否等于 std::string::npos,如果不等于,则输出子字符串中任意一个字符的位置。
substr()
成员函数提取字符串的子串。std::string sub = str.substr(7, 5); // 提取从位置 7 开始的 5 个字符
insert()
、erase()
和 replace()
成员函数对字符串进行插入、删除和替换操作。