c++string类的模拟实现: 查找字符/字符串和删除字符/字符串
作者:野牛程序员:2024-01-03 14:33:14 C++阅读 2778
C++中的字符串类模拟实现可以包括查找字符/字符串和删除字符/字符串的功能。以下是一个简单的示例:
#include <iostream>
class MyString {
private:
char* data;
size_t length;
public:
// 构造函数
MyString(const char* str) {
length = strlen(str);
data = new char[length + 1];
strcpy(data, str);
}
// 析构函数
~MyString() {
delete[] data;
}
// 查找字符
size_t findChar(char target) const {
for (size_t i = 0; i < length; ++i) {
if (data[i] == target) {
return i;
}
}
return std::string::npos; // 类似于std::string的npos,表示未找到
}
// 查找字符串
size_t findString(const char* target) const {
char* result = strstr(data, target);
if (result != nullptr) {
return result - data;
}
return std::string::npos;
}
// 删除字符
void deleteChar(char target) {
size_t pos = findChar(target);
if (pos != std::string::npos) {
for (size_t i = pos; i < length - 1; ++i) {
data[i] = data[i + 1];
}
data[length - 1] = '\\0';
--length;
}
}
// 删除字符串
void deleteString(const char* target) {
size_t pos = findString(target);
if (pos != std::string::npos) {
for (size_t i = pos; i < length - strlen(target); ++i) {
data[i] = data[i + strlen(target)];
}
data[length - strlen(target)] = '\\0';
length -= strlen(target);
}
}
// 获取字符串
const char* getString() const {
return data;
}
};
int main() {
MyString myString("Hello, World!");
// 查找并删除字符
myString.deleteChar('o');
std::cout << "After deleting 'o': " << myString.getString() << std::endl;
// 查找并删除字符串
myString.deleteString(", ");
std::cout << "After deleting ', ': " << myString.getString() << std::endl;
return 0;
}这只是一个简单的模拟实现,实际的字符串类可能需要更多的功能和安全性考虑。
野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892

