wchar_t是否对Windows API有用?

当我在C或C ++中包含#include <windows.h> ,我不得不决定字符的格式,其中TCHAR等于charwchar_t

我已经看了很多,就像这个或这样的网站这样的post指出, wchar_t事情很久以前就出现在UTF8之前,由于各种原因,它不是一个非常好的Unicode解决scheme在现代编程中。 然而,这些没有说明已经在wchar_t运行的现有系统的支持。

所以我的问题是,我应该使用哪一个? 如果我使用普通的旧char将来会被MS放弃,因为在这一天结束的时候,API的wchar_t版本更新了吗? 或者如果我使用wchar_t ,是否会让我的代码在其他现代平台上运行,而后来在UTF8中使用普通的老char开发是一种痛苦?

这是正确处理任意路径名称(因为它们被允许包含宽字符)的绝对有用和唯一的方法。 UTF-16的选择经常受到批评(有充分的理由),但这是无关紧要的。 操作系统使用它,所以你也必须使用它。 你所能做的最好的是总是调用WINAPI函数的宽字符版本(例如OpenFileW ),并在你的程序内部使用UTF-8。 是的,这意味着来回转换,但通常不是性能瓶颈。

我强烈建议UTF-8宣言解释为什么客观这是最好的方法。

可移植性,跨平台互操作性和简单性比现有平台API的互操作性更重要。 所以,最好的方法是在任何地方使用UTF-8窄字符串,并在使用不支持UTF-8的平台API并接受宽字符串(例如Windows API)时来回转换它们。 在处理字符串接受系统API(例如UI代码和文件系统API)时,性能很少是任何相关性的问题,并且在应用程序的其他地方使用相同的编码有很大的好处,所以我们没有足够的理由否则。