2012-04-16 74 views
0

我的程序需要很多ANSI < => UNICODE对话,所以我想到了创建多种类型的对象,它将转换所有的东西比联合功能和大量的新/删除更容易。伪代码:C++多目标对象的想法

class CWchar // char based 
{ 
public: 
    public static implicit operator wchar_t*(CWchar cw) 
    { 
     // converting cw.data to wchar_t 
     // up to U+FFFF conversion needed 
    } 
    public static implicit operator char*(CWchar cw) 
    { 
     return cw.data; 
    } 
    CWchar& CWchar::operator=(const char* c) 
    { 
     data = *c; 
     return *this; 
    } 
    CWchar& CWchar::operator=(const wchar_t* c) 
    { 
     //conversion to char* ... 
     return *this; 
    } 

    // add some smart pointers, garbage collector, and leave delete 

private: 
    char* data; 
} 

这真的值得编码吗?或者我应该考虑另一种解决方案吗?也许有已经完成的项目?或者,也许我错了,这个想法很糟糕?谢谢

+3

为什么你需要做这么多的转换?是否有可能只有一个连接Unicode端和非Unicode端的桥? – 2012-04-16 12:42:10

+0

我的应用程序是迷你即时消息,它接收多字节字符*,我需要将其转换为宽wchar_t *,例如希腊字母将格式化好。 – user1112008 2012-04-16 12:51:22

+0

@MikeKwan我忘了补充通知,你能否多说一些关于桥梁的想法? – user1112008 2012-04-16 13:23:29

回答

1

这听起来很像codecvt。这允许您在Char *和多字节wchar_t *流之间进行转换。这是标准库的一部分。 Stroustrup的C++编程语言第三版有一个很好的附录。