当前位置:首页 C++ > 正文

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
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
相关推荐

最新推荐

热门点击