如何判断 wchar_t 是否有代理项(UTF-16)?

use*_*995 2 c++ unicode wchar-t utf-16 multibyte-functions

我已经看过有关此问题的其他几篇文章,但无法找到有关如何以编程方式确定代码点是否使用多个 2 字节(在 Windows 上)wchar_t 的任何详细信息。

一个例子:

const wchar_t* s2 = L"\U0002008A"; // The "Han" character
std::wstring in(s2);               // length() == 2
Run Code Online (Sandbox Code Playgroud)

我想知道如何确定字符何时 length() > 1。

bam*_*s53 5

U+FFFF 以上的任何代码点都在其 UTF-16 编码中使用代理项。替代值的范围是 D800-DFFF。