根据 MSVC++ 中的 unicode 设置自动在 std::string 和 std::wstring 之间更改?

发布于 2024-11-09 22:05:12 字数 283 浏览 0 评论 0原文

我正在编写一个 DLL,希望能够在 MSVC++2010 中的 unicode 和多字节设置之间切换。例如,我使用 _T("string")LPCTSTRWIN32_FIND_DATA 而不是 -W 和 -A 版本等。

现在我想要 std::strings 根据 unicode 设置在 std::stringstd::wstring 之间变化。这可能吗?否则,这可能最终会变得极其复杂。

I'm writing a DLL and want to be able to switch between the unicode and multibyte setting in MSVC++2010. For example, I use _T("string") and LPCTSTR and WIN32_FIND_DATA instead of the -W and -A versions and so on.

Now I want to have std::strings which change between std::string and std::wstring according to the unicode setting. Is that possible? Otherwise, this will probably end up getting extremely complicated.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

指尖微凉心微凉 2024-11-16 22:05:12

为什么不像 Win32 API 那样:在内部使用宽字符,并提供 DoSomethingA 函数的字符转换外观,这些函数只需将其输入转换为 Unicode。

也就是说,您可以定义一个 tstring 类型,如下所示:

#ifdef _UNICODE
typedef std::wstring tstring;
#else
typedef std::string tstring;
#endif

或者可能:

typedef std::basic_string<TCHAR> tstring;

Why not do like the Win32 API does: Use wide characters internally, and provide a character-converting facade of DoSomethingA functions which simply convert their input to Unicode.

That said, you could define a tstring type like so:

#ifdef _UNICODE
typedef std::wstring tstring;
#else
typedef std::string tstring;
#endif

or possibly:

typedef std::basic_string<TCHAR> tstring;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文