gpt4 book ai didi

visual-c++ - Platform::String 真的这么没用吗?

转载 作者:行者123 更新时间:2023-12-04 01:29:43 25 4
gpt4 key购买 nike

我试图在“Windows 应用商店”(又名 Metro 风格)应用程序中用 C++/CX 编写几行代码,我很惊讶地看到 Platform::String缺少许多基本的字符串操作,例如 "replace""index of" .

我想我可以使用内部数据,将其传递给 std:string 实例并应用我需要的操作,但我想知道我是否缺少执行这些操作的某些“仅平台:: *”方式。

请注意这个问题是关于 C++/CX,而不是 C#。

最佳答案

Windows 运行时字符串类型, HSTRING 是不可变的并且是引用计数的。
Platform::String C++/CX 中的类型只是 HSTRING 的包装器类型及其支持的少数操作(请参阅 Windows Runtime C++ Functions 列表中以 Windows 开头的函数)。

没有改变字符串的操作,因为字符串类型是不可变的(因此没有 Replace )。有一些非变异操作(当然比 C++ 的 std::wstring 少)。
Platform::String确实提供Begin()End()将随机访问迭代器返回到字符串中的成员函数(以及非成员 begin()end() 重载)(它们返回指针, wchar_t const* ,并且指针是有效的随机访问迭代器)。您可以将这些迭代器与任何采用随机访问迭代器且不尝试改变底层序列的 C++ 标准库算法一起使用。例如,考虑使用 std::find查找字符第一次出现的索引。

如果你需要改变一个字符串,使用 std::wstringstd::vector<wchar_t> .理想情况下,考虑使用 C++ std::wstring在您的程序中尽可能多地使用 C++/CX Platform::String您需要与其他 Windows 运行时组件互操作的地方(即,跨越 ABI 边界)。

关于visual-c++ - Platform::String 真的这么没用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12533883/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com