C++ string 类源码解析及简化实现 - 深入理解字符串操作
C++ 的 string 类是标准库中提供的一个字符串处理类,其官方源码是不公开的。然而,你可以查找 C++ 标准库的实现,例如 GNU libstdc++ 或者 LLVM libc++,这些库都提供了 string 类的实现。\n\n以下是一个简化版的 string 类的实现,供参考:\n\ncpp\n#include <iostream>\n#include <cstring>\n\nclass String {\npublic:\n String() {\n data = new char[1];\n data[0] = '\0';\n length = 0;\n }\n\n String(const char* str) {\n length = std::strlen(str);\n data = new char[length + 1];\n std::strcpy(data, str);\n }\n\n String(const String& other) {\n length = other.length;\n data = new char[length + 1];\n std::strcpy(data, other.data);\n }\n\n ~String() {\n delete[] data;\n }\n\n String& operator=(const String& other) {\n if (this == &other) {\n return *this;\n }\n \n delete[] data;\n\n length = other.length;\n data = new char[length + 1];\n std::strcpy(data, other.data);\n\n return *this;\n }\n\n const char* c_str() const {\n return data;\n }\n\n int size() const {\n return length;\n }\n\nprivate:\n char* data;\n int length;\n};\n\nint main() {\n String str1;\n String str2("Hello");\n String str3 = str2;\n String str4;\n str4 = str2;\n\n std::cout << str1.c_str() << std::endl;\n std::cout << str2.c_str() << std::endl;\n std::cout << str3.c_str() << std::endl;\n std::cout << str4.c_str() << std::endl;\n\n return 0;\n}\n\n\n这个简化版的 String 类实现了默认构造函数、带参构造函数、拷贝构造函数、析构函数、赋值运算符重载以及一些常用的成员函数,如 c_str() 和 size()。你可以根据需要扩展这个类的功能。请注意,这只是一个简化的实现,实际的标准库中的 string 类会更复杂。
原文地址: https://www.cveoy.top/t/topic/pyZW 著作权归作者所有。请勿转载和采集!