字符串函数
memset
void* memset(void* ptr, int value, size_t num);//地址 字符 字节数
案例:
#include <iostream>
#include <cstring>
int main() {char buffer[50];// 使用 memset 将 buffer 的前 50 字节设置为 0memset(buffer, 0, sizeof(buffer));std::cout << "Buffer after memset: '" << buffer << "'" << std::endl; return 0;
}
memcpy
void* memcpy(void* dest, const void* src, size_t n);
dest:目标内存地址
src:源内存地址
n:要复制的字节数
#include <iostream>
#include <cstring> // 包含 memcpy 的头文件
struct Node {int id;char name[20];
};
int main() {Node src = {1, "Example"};Node dest;// 使用 memcpy 拷贝结构体memcpy(&dest, &src, sizeof(Node));std::cout << "Dest ID: " << dest.id << ", Name: " << dest.name << std::endl;return 0;
}
memcmp
int memcmp(const void* ptr1, const void* ptr2, size_t n);
memcmp 用于比较两个内存区域(ptr1 和 ptr2)的前 n 个字节。
strcmp
int strcmp(const char* str1, const char* str2);
str1:第一个字符串
str2:第二个字符串
#include <iostream>
#include <cstring> // 包含 strcmp 的头文件
int main() {const char* str1 = "Hello";const char* str2 = "World";// 使用 strcmp 比较字符串int result = strcmp(str1, str2);if (result < 0) {std::cout << "\"" << str1 << "\" is less than \"" << str2 << "\"" << std::endl;} else if (result > 0) {std::cout << "\"" << str1 << "\" is greater than \"" << str2 << "\"" << std::endl;} else {std::cout << "\"" << str1 << "\" is equal to \"" << str2 << "\"" << std::endl;return 0;
}
strlen
#include <cstring> // 需要包含此头文件
const char* str = "Hello, world!";
size_t length = strlen(str); // length 将为 13