c++ - 自定义字符串类实现建议?

标签 c++ string unicode ascii

我正在编写自己的字符串类(只是为了好玩),但我遇到了一些问题。我希望我的类(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/

相关文章:

c++ - shared_ptr 隐式转换在这里失败而在那里成功?

c++ - 如何使用Rcpp初始化mappedsparsematrix

c++ - 函数指针类型不能用于函数原型(prototype)

c - 如何引用二维数组中的单个字符?

c++ - ICU、Unicode 和图书馆

c++ - C/C++ 无符号整数溢出

c++ - 标识符 [字符串值] 未定义

python - 使用 u' 和 Decimal 值解码字符串中的 Python json

javascript - 如何在 Javascript 中去除 ‏?

unicode - Perl 6 标识符中允许什么?