winrt::hstring struct (C++/WinRT)
A sequential collection of UTF-16 Unicode characters representing a text string. For more examples and info about winrt::hstring, see String handling in C++/WinRT.
The winrt::hstring type encapsulates HSTRING behind an interface similar to that of std::wstring. A HSTRING is a handle to a Windows Runtime string. For info about how to set an HSTRING into a winrt::hstring, and how to retrieve an HSTRING from a winrt::hstring, see Interoperating with the ABI's HSTRING.
Syntax
struct hstring
Requirements
Minimum supported SDK: Windows SDK version 10.0.17134.0 (Windows 10, version 1803)
Namespace: winrt
Header: %WindowsSdkDir%Include<WindowsTargetPlatformVersion>\cppwinrt\winrt\base.h (included by default)
Member type aliases
Alias name | Type |
---|---|
hstring::value_type | A synonym for wchar_t. |
hstring::size_type | A synonym for uint32_t. |
hstring::const_reference | A synonym for hstring::value_type const&. |
hstring::const_pointer | A synonym for hstring::value_type const*. |
hstring::const_iterator | A synonym for hstring::const_pointer. |
hstring::const_reverse_iterator | A synonym for std::reverse_iterator<hstring::const_iterator>. |
Constructors
Constructor | Description |
---|---|
hstring::hstring constructor | Initializes a new instance of the hstring struct with a copy of the input string data. |
Member functions
Function | Description |
---|---|
hstring::back function | Returns a reference to the last character in the hstring object. |
hstring::begin function | Returns a const iterator to the first character in the hstring object. |
hstring::c_str function | Returns a pointer to the underlying null-terminated C-style string of the characters in the hstring object; no copy is made. |
hstring::cbegin function | Returns a const iterator to the first character in the hstring object. |
hstring::cend function | Returns a const iterator to one beyond the end of (one beyond the last character in) the hstring object. |
hstring::clear function | Makes the hstring object empty. |
hstring::crbegin function | Returns a const reverse iterator to one beyond the end of (one beyond the last character in) the hstring object. |
hstring::crend function | Returns a const reverse iterator to the first character in the hstring object. |
hstring::data function | Returns a null-terminated C-style string version of the characters in the hstring object. |
hstring::empty function | Returns a value indicating whether the hstring object is empty. |
hstring::end function | Returns a const iterator to one beyond the end of (one beyond the last character in) the hstring object. |
hstring::front function | Returns a reference to the first character in the hstring object. |
hstring::rbegin function | Returns a const reverse iterator to one beyond the end of (one beyond the last character in) the hstring object. |
hstring::rend function | Returns a const reverse iterator to the first character in the hstring object. |
hstring::size function | Returns the number of characters in the hstring object. |
Member operators
Operator | Description |
---|---|
hstring::operator std::wstring_view | Converts the hstring object to a std::wstring_view. |
hstring::operator[] (subscript operator)) | Returns a reference to the character at the specified position within the hstring object. |
hstring::operator= (assignment operator) | Assigns a value to the hstring object. |
Free functions
Function | Description |
---|---|
attach_abi function | Attaches a hstring object to a handle to a Windows Runtime string. |
copy_from_abi function | Copies to a hstring object from a handle to a Windows Runtime string. Clears the hstring, copies the parameter, and begins managing the handle. |
copy_to_abi function | Copies to a handle to a Windows Runtime string from a hstring object. |
detach_abi function | Detaches a hstring object from its handle, perhaps to return it to a caller. |
to_hstring function | Converts an input value to a winrt::hstring containing the value's string representation. |
Free operators
Operator | Description |
---|---|
operator!= (inequality operator) | Returns a value indicating whether the two parameters are unequal to one another. |
operator+ (concatenation operator) | Returns a new hstring object resulting from concatenating the two parameters together. |
operator< (less-than operator) | Returns a value indicating whether the first parameter is less than the second parameter. |
operator<= (less-than-or-equal-to operator) | Returns a value indicating whether the first parameter is less than or equal to the second parameter. |
operator== (equality operator) | Returns a value indicating whether the two parameters are equal to one another. |
operator> (greater-than operator) | Returns a value indicating whether the first parameter is greater than the second parameter. |
operator>= (greater-than-or-equal-to operator) | Returns a value indicating whether the first parameter is greater than or equal to the second parameter. |
Iterators
An hstring is a range, and that range is defined by the hstring::begin and hstring::end member functions, each of which returns a const iterator (as do hstring::cbegin and hstring::cend). Because of this, you can enumerate the characters in an hstring object with either a range-based for
statement, or with the std::for_each template function.
#include <iostream>
using namespace winrt;
...
void Iterators(hstring const& theHstring)
{
for (auto const& element : theHstring)
{
std::wcout << element;
}
std::for_each(theHstring.cbegin(), theHstring.cend(), [](T const& element) { std::wcout << element; });
}
hstring::hstring constructor
Initializes a new instance of the hstring struct with a copy of the input string data.
Syntax
hstring() noexcept;
hstring(winrt::hstring const& h);
explicit hstring(std::wstring_view const& v);
hstring(wchar_t const* c);
hstring(wchar_t const* c, uint32_t s);
Parameters
h
An hstring value that initializes the hstring object.
v
A std::wstring_view value that initializes the hstring object.
c
A pointer to an array of constant wchar_t that initializes the hstring object.
s
A number that specifies a fixed size for the hstring object.
Example
using namespace winrt;
...
void Constructors(
hstring const& theHstring,
std::wstring_view const& theWstringView,
wchar_t const* wideLiteral,
std::wstring const& wideString)
{
// hstring() noexcept
hstring fromDefault{};
// hstring(hstring const& h)
hstring fromHstring{ theHstring };
// explicit hstring(std::wstring_view const& value)
hstring fromWstringView{ theWstringView };
// hstring(wchar_t const* value)
hstring fromWideLiteral{ wideLiteral };
hstring fromWideString{ wideString.c_str() };
// hstring(wchar_t const* value, uint32_t size)
hstring fromWideLiteralWithSize{ wideLiteral, 256 };
hstring fromWideStringWithSize{ wideString.c_str(), 256 };
}
hstring::back function
Returns a reference to the last character in the hstring object.
Syntax
wchar_t const& back() const noexcept;
Return value
A reference to the last character in the hstring object.
hstring::begin function
Returns a const iterator to the first character in the hstring object. See Iterators.
Syntax
wchar_t const* begin() const noexcept;
Return value
A const iterator to the first character in the hstring object.
hstring::c_str function
Returns a pointer to the underlying null-terminated C-style string of the characters in the hstring object; no copy is made.
Syntax
wchar_t const* c_str() const noexcept;
Return value
A pointer to the underlying null-terminated C-style string of the characters in the hstring object; no copy is made.
Example
#include <iostream>
using namespace winrt;
...
void PrintHstring(hstring const& theHstring)
{
// You can get a standard wide string from an hstring.
std::wcout << theHstring.c_str() << std::endl;
}
hstring::cbegin function
Returns a const iterator to the first character in the hstring object. See Iterators.
Syntax
wchar_t const* cbegin() const noexcept;
Return value
A const iterator to the first character in the hstring object.
hstring::cend function
Returns a const iterator to one beyond the end of (one beyond the last character in) the hstring object. See Iterators.
Syntax
wchar_t const* cend() const noexcept;
Return value
A const iterator to one beyond the end of (one beyond the last character in) the hstring object.
hstring::clear function
Makes the hstring object empty.
Syntax
void clear() noexcept;
hstring::crbegin function
Returns a const reverse iterator to one beyond the end of (one beyond the last character in) the hstring object.
Syntax
std::reverse_iterator<wchar_t const*> crbegin() const noexcept;
Return value
A const reverse iterator to one beyond the end of (one beyond the last character in) the hstring object.
hstring::crend function
Returns a const reverse iterator to the first character in the hstring object.
Syntax
std::reverse_iterator<wchar_t const*> crend() const noexcept;
Return value
A const reverse iterator to the first character in the hstring object.
hstring::data function
Returns a null-terminated C-style string version of the characters in the hstring object.
Syntax
wchar_t const* data() const noexcept;
Return value
A null-terminated C-style string version of the characters in the hstring object.
Example
#include <iostream>
using namespace winrt;
...
void PrintHstring(hstring const& theHstring)
{
// You can get a standard wide string from an hstring.
std::wcout << theHstring.data() << std::endl;
}
hstring::empty function
Returns a value indicating whether the hstring object is empty.
Syntax
bool empty() const noexcept;
Return value
true
if the hstring object is empty, otherwise false
.
hstring::end function
Returns a const iterator to one beyond the end of (one beyond the last character in) the hstring object. See Iterators.
Syntax
wchar_t const* end() const noexcept;
Return value
A const iterator to one beyond the end of (one beyond the last character in) the hstring object.
hstring::front function
Returns a reference to the first character in the hstring object.
Syntax
wchar_t const& front() const noexcept;
Return value
A reference to the first character in the hstring object.
hstring::operator std::wstring_view
Converts the hstring object to a std::wstring_view.
Syntax
operator std::wstring_view() const noexcept;
Return value
The hstring object converted to a std::wstring_view.
Example
using namespace winrt;
...
Uri contosoUri{ L"https://www.contoso.com" };
Uri awUri{ L"https://www.adventure-works.com" };
// Uri::Domain() is of type hstring. But we can use hstring's conversion operator to std::wstring_view.
std::wstring domainWstring{ contosoUri.Domain() }; // L"contoso.com"
domainWstring = awUri.Domain(); // L"https://www.adventure-works.com"
hstring::operator[] (subscript operator)
Returns a reference to the character at the specified position within the hstring object.
Syntax
wchar_t const& operator[](uint32_t pos) const noexcept;
Parameters
pos
A zero-based character position, or index.
Return value
A reference to the character at the specified position within the hstring object.
hstring::operator= (assignment operator)
Assigns a value to the hstring object.
Syntax
winrt::hstring& operator=(winrt::hstring const& h);
winrt::hstring& operator=(std::wstring_view const& v);
Parameters
h
An hstring value to assign to the hstring object.
v
A std::wstring_view value to assign to the hstring object.
Return value
A reference to the hstring object.
hstring::rbegin function
Returns a const reverse iterator to one beyond the end of (one beyond the last character in) the hstring object.
Syntax
std::reverse_iterator<wchar_t const*> rbegin() const noexcept;
Return value
A const reverse iterator to one beyond the end of (one beyond the last character in) the hstring object.
hstring::rend function
Returns a const reverse iterator to the first character in the hstring object.
Syntax
std::reverse_iterator<wchar_t const*> rend() const noexcept;
Return value
A const reverse iterator to the first character in the hstring object.
hstring::size function
Returns the number of characters in the hstring object.
Syntax
uint32_t size() const noexcept;
Return value
A uint32_t containing the number of characters in the hstring object.
attach_abi function
Attaches a hstring object to a handle to a Windows Runtime string.
Syntax
void attach_abi(winrt::hstring& object, HSTRING value) noexcept;
Parameters
object
A hstring object to operate on.
value
A handle to a Windows Runtime string.
copy_from_abi function
Copies to a hstring object from a handle to a Windows Runtime string. Clears the hstring, copies the parameter, and begins managing the handle.
Syntax
void copy_from_abi(winrt::hstring& object, HSTRING value);
Parameters
object
A hstring object to operate on.
value
A handle to a Windows Runtime string.
copy_to_abi function
Copies to a handle to a Windows Runtime string from a hstring object.
Syntax
void copy_to_abi(winrt::hstring const& object, HSTRING& value);
Parameters
object
A hstring object to operate on.
value
A handle reference, via which to copy the hstring's handle.
detach_abi function
Detaches a hstring object from its handle, perhaps to return it to a caller.
Syntax
HSTRING detach_abi(winrt::hstring& object) noexcept;
HSTRING detach_abi(winrt::hstring&& object) noexcept;
Parameters
object
A hstring object to operate on.
Return value
The handle to the Windows Runtime string.
operator!= (inequality operator)
Returns a value indicating whether the two parameters are unequal to one another.
Syntax
inline bool operator!=(winrt::hstring const& hLeft, winrt::hstring const& hRight) noexcept;
inline bool operator!=(winrt::hstring const& hLeft, std::wstring const& wRight) noexcept;
inline bool operator!=(winrt::hstring const& hLeft, wchar_t const* cRight) noexcept;
inline bool operator!=(std::wstring const& wLeft, winrt::hstring const& hRight) noexcept;
inline bool operator!=(wchar_t const* cLeft, winrt::hstring const& hRight) noexcept;
Parameters
hLeft
hRight
An hstring value to compare with the other parameter.
wLeft
wRight
A std::wstring
value to compare with the other parameter.
cLeft
cRight
A pointer to an array of constant wchar_t to compare with the other parameter.
Return value
true
if the two parameters are unequal to one another, otherwise false
.
operator+ (concatenation operator)
Returns a new hstring object resulting from concatenating the two parameters together.
Syntax
inline hstring operator+(winrt::hstring const& hLeft, winrt::hstring const& hRight);
inline hstring operator+(winrt::hstring const& hLeft, std::wstring const& wRight);
inline hstring operator+(winrt::hstring const& hLeft, std::wstring_view const& vRight);
inline hstring operator+(winrt::hstring const& hLeft, wchar_t const* cRight);
inline hstring operator+(winrt::hstring const& hLeft, wchar_t scRight);
inline hstring operator+(std::wstring const& wLeft, winrt::hstring const& hRight);
inline hstring operator+(std::wstring_view const& vLeft, winrt::hstring const& hRight);
inline hstring operator+(wchar_t const* cLeft, winrt::hstring const& hRight);
inline hstring operator+(wchar_t scLeft, winrt::hstring const& hRight);
Parameters
hLeft
hRight
An hstring value to concatenate with the other parameter.
wLeft
wRight
A std::wstring
value to concatenate with the other parameter.
vLeft
vRight
A std::wstring_view value to concatenate with the other parameter.
cLeft
cRight
A pointer to an array of constant wchar_t to concatenate with the other parameter.
scLeft
scRight
A wchar_t to concatenate with the other parameter.
Return value
A new hstring object resulting from concatenating the two parameters together.
operator< (less-than operator)
Returns a value indicating whether the first parameter is less than the second parameter.
Syntax
inline bool operator<(winrt::hstring const& hLeft, winrt::hstring const& hRight) noexcept;
inline bool operator<(winrt::hstring const& hLeft, std::wstring const& wRight) noexcept;
inline bool operator<(winrt::hstring const& hLeft, wchar_t const* cRight) noexcept;
inline bool operator<(std::wstring const& wLeft, winrt::hstring const& hRight) noexcept;
inline bool operator<(wchar_t const* cLeft, winrt::hstring const& hRight) noexcept;
Parameters
hLeft
hRight
An hstring value to compare with the other parameter.
wLeft
wRight
A std::wstring
value to compare with the other parameter.
cLeft
cRight
A pointer to an array of constant wchar_t to compare with the other parameter.
Return value
true
if the first parameter is less than the second parameter, otherwise false
.
operator<= (less-than-or-equal-to operator)
Returns a value indicating whether the first parameter is less than or equal to the second parameter.
Syntax
inline bool operator<=(winrt::hstring const& hLeft, winrt::hstring const& hRight) noexcept;
inline bool operator<=(winrt::hstring const& hLeft, std::wstring const& wRight) noexcept;
inline bool operator<=(winrt::hstring const& hLeft, wchar_t const* cRight) noexcept;
inline bool operator<=(std::wstring const& wLeft, winrt::hstring const& hRight) noexcept;
inline bool operator<=(wchar_t const* cLeft, winrt::hstring const& hRight) noexcept;
Parameters
hLeft
hRight
An hstring value to compare with the other parameter.
wLeft
wRight
A std::wstring
value to compare with the other parameter.
cLeft
cRight
A pointer to an array of constant wchar_t to compare with the other parameter.
Return value
true
if the first parameter is less than or equal to the second parameter, otherwise false
.
operator== (equality operator)
Returns a value indicating whether the two parameters are equal to one another.
Syntax
inline bool operator==(winrt::hstring const& hLeft, winrt::hstring const& hRight) noexcept;
inline bool operator==(winrt::hstring const& hLeft, std::wstring const& wRight) noexcept;
inline bool operator==(winrt::hstring const& hLeft, wchar_t const* cRight) noexcept;
inline bool operator==(std::wstring const& wLeft, winrt::hstring const& hRight) noexcept;
inline bool operator==(wchar_t const* cLeft, winrt::hstring const& hRight) noexcept;
Parameters
hLeft
hRight
An hstring value to compare with the other parameter.
wLeft
wRight
A std::wstring
value to compare with the other parameter.
cLeft
cRight
A pointer to an array of constant wchar_t to compare with the other parameter.
Return value
true
if the two parameters are equal to one another, otherwise false
.
operator> (greater-than operator)
Returns a value indicating whether the first parameter is greater than the second parameter.
Syntax
inline bool operator>(winrt::hstring const& hLeft, winrt::hstring const& hRight) noexcept;
inline bool operator>(winrt::hstring const& hLeft, std::wstring const& wRight) noexcept;
inline bool operator>(winrt::hstring const& hLeft, wchar_t const* cRight) noexcept;
inline bool operator>(std::wstring const& wLeft, winrt::hstring const& hRight) noexcept;
inline bool operator>(wchar_t const* cLeft, winrt::hstring const& hRight) noexcept;
Parameters
hLeft
hRight
An hstring value to compare with the other parameter.
wLeft
wRight
A std::wstring
value to compare with the other parameter.
cLeft
cRight
A pointer to an array of constant wchar_t to compare with the other parameter.
Return value
true
if the first parameter is greater than the second parameter, otherwise false
.
operator>= (greater-than-or-equal-to operator)
Returns a value indicating whether the first parameter is greater than or equal to the second parameter.
Syntax
inline bool operator>=(winrt::hstring const& hLeft, winrt::hstring const& hRight) noexcept;
inline bool operator>=(winrt::hstring const& hLeft, std::wstring const& wRight) noexcept;
inline bool operator>=(winrt::hstring const& hLeft, wchar_t const* cRight) noexcept;
inline bool operator>=(std::wstring const& wLeft, winrt::hstring const& hRight) noexcept;
inline bool operator>=(wchar_t const* cLeft, winrt::hstring const& hRight) noexcept;
Parameters
hLeft
hRight
An hstring value to compare with the other parameter.
wLeft
wRight
A std::wstring
value to compare with the other parameter.
cLeft
cRight
A pointer to an array of constant wchar_t to compare with the other parameter.
Return value
true
if the first parameter is greater than or equal to the second parameter, otherwise false
.