我正在编写自己的字符串类(只是为了好玩),但我遇到了一些问题。我希望我的类(class)能够处理 ASCII 和 Unicode 字符串。如果将 const wchar_t*
分配给我的类,则设置 Unicode 标志。如果您分配 const char*
,则 未设置 Unicode 标志。
此外,如果您尝试将 Unicode 字符附加到 ASCII 字符串,它将创建一个全新的 Unicode 字符串,或者重新分配其缓冲区并将所有内容转换为 Unicode(不确定我会做哪一个) .
无论如何,关于我的问题:我想要类似于 std::string 的 c_str
函数的东西。显然我会有 2 个不同的函数,一个返回 const char*
ASCII 字符串,一个返回 const wchar_t*
Unicode 字符串。
假设我的字符串是 ASCII。如果我调用 ToAsciiString()
函数,它只会返回一个指向字符串内部存储的指针,该指针不会也不应手动释放,因为字符串 dtor 会自动执行此操作。
但是如果我想要 Unicode 格式的 ASCII 字符串,我可以调用 ToUnicodeString()
。但这会产生一个问题:我需要分配一个新的缓冲区来将我的 ASCII 字符串转换成。如果我那样做,那么返回的指针将需要手动delete[]
,这会破坏 std::string 的 c_str
的简单性,例如。
我不确定如何才能正确地做到这一点。
最佳答案
我认为你应该能够在你的类中维护 2 个缓冲区。在某些情况下,您只有一个,但如果需要两种表示,则必须同时分配两者。
这种方法将使您的类的使用变得简单。在我们这个时代,我们有千兆字节的 RAM。这意味着除非您需要处理大量数据,否则这种方法听起来并不荒谬。
关于c++ - 自定义字符串类实现建议?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12811012/