我正在编写自己的字符串类(只是为了好玩),但我遇到了一些问题。我希望我的班级能够同时处理 ASCII 和 Unicode 字符串。如果您将 a 分配const wchar_t*
给我的班级,则会设置 Unicode 标志。如果您分配 a 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's 的简单性c_str
。
我不确定如何正确地做到这一点。