c++string类的模拟实现: 查找字符/字符串和删除字符/字符串
作者:野牛程序员:2024-01-03 14:33:14 C++阅读 2398
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