0

我有一个 C++/CX Windows 8 应用程序,我需要执行类似于以下转换的操作:

String^ foo = "32";
byte bar = <the numeric value of foo>

如何将存储在 String^ 中的数字转换为字节类型?我失去了我通常用来实现这一目标的所有 C# 魔法!

提前感谢您对此的任何帮助。

4

1 回答 1

1

假设 C++/CX 类似于 C#,您就会遇到麻烦。根本不是这种情况,它是纯 C++,只是带有一些语言扩展,可以更轻松地处理 WinRT 类型。这不适合使用 Platform::String 类型,它不是通用字符串类。标准 C++ 库已经涵盖了这一点。该课程被故意削弱以阻止您想到的用法。这篇MSDN 库文章很好地解释了它:

当您将字符串来回传递给 Windows 运行时类中的方法时,或者当您跨应用程序二进制接口 (ABI) 边界与其他 Windows 运行时组件交互时,请使用 Platform::String 类。Platform::String 类为几种常见的字符串操作提供了方法,但它并没有被设计成一个功能齐全的字符串类。在您的 C++ 模块中,使用标准 C++ 字符串类型(例如 wstring)进行任何重要的文本处理,然后将最终结果转换为 Platform::String^,然后再将其传递到公共接口或从公共接口传出。在 wstring 或 wchar_t* 和 Platform::String 之间进行转换既简单又高效。

所以适当的代码应该类似于:

#include <string>
...
    std::wstring foo(L"32");
    auto bar = static_cast<unsigned char>(std::stol(foo));
于 2013-03-27T00:54:52.433 回答