重载Unicode和ANSI的toString

时间:2015-12-13 03:29:23

标签: c++ unicode overloading

在实现类的toString()函数时,我应该实现unicode和ascii版本吗?

class MyClass
{
public:

    string toString()
    {
        return "foo";
    }

    // Should the unicode version be implemented aswell?
    wstring toString()
    {
        return L("foo");
    }

};


// Does this suffice?
#ifndef UNICODE
typedef string tstring;
#else
typedef wstring tstring;
#endif

class MyClass
{
public:

    tstring toString()
    {
        return "foo";
    }
};

还有一个函数重载转换为int?

class MyClass
{
public:

    // ???
    int operator>>(MyClass& obj)
    {
        return myInt;
    }
private:
    int myInt;
};

1 个答案:

答案 0 :(得分:3)

显然这个问题是关于Windows编程的,虽然这并没有反映在(当前正在写这篇文章)标签上。

对于Windows,您应该使用wchar_t类型而不必担心与早期Windows版本保持兼容,而(1)甚至无法使用现代Visual C ++生成可执行文件。

就是这样。

(1)如果可以生成Windows 9x可执行文件,那么支持旧Windows的方法就不会使用过时的T内容或ANSI文本直接,但从2000年开始使用Microsoft的Layer for Unicode,现在已经过去了15年;这是非常古老的帽子。