本文主要参照String handling in C++/WinRTStandard C++ data types and C++/WinRT

hstring

WinRT有自己的字符串类型,叫做HSTRING。代表一个不可变的字符串类型,其定义如下:

typedef HSTRING__* HSTRING;

一个空的hstring是一个空的以NULL结尾的字符串。可以使用 WindowsCreateString创建一个hstring。使用WindowsDeleteString可以删除一个hstring。使用WindowsCreateStringReference可以创建一个hstring的引用。使用WindowsDuplicateString可以赋值一个hstring。使用WindowsConcatString可以合并hstring。 WindowsGetStringRawBuffer可以获取支持hstring的缓冲。

可以先调用WindowsPreallocateStringBuffer 来分配一个可写的缓冲,操作完成之后再使用WindowsPromoteStringBuffer 将其变为一个hstring。

winrt::hstring

winrt::hstring可以看作时HSTRING的C++封装。从设计上,winrt::hstring可以和C++的 std::wstring互相转化。浏览winrt::hstring struct (C++/WinRT)。winrt::hstring有一个operator std::wstring_view()可以将其转化为std::wstring_view。同时,winrt::hstring可以从std::wstring_view来创建一个实例,并且也可以从wchar_t 数组创建实例。winrt::hstring还带有to_hstring函数,可以将许多值转为hstring。

IStringable::ToString返回的也是winrt::hstring。

winrt::param::hstring时winrt内部用于优化与C++标准库的互操作,不要在程序中随便使用它。

其他参考

(本篇完)