我有一个C ++ / CX Windows 8应用程序,我需要做类似于以下转换的事情:
String^ foo = "32";
byte bar = <the numeric value of foo>
如何将存储在String ^中的数字转换为字节类型?没有我通常用来实现这一目标的所有C#魔法,我迷失了!
提前感谢您提供任何帮助。
答案 0 :(得分:1)
假设C ++ / CX类似于C#,您遇到了麻烦。事实并非如此,纯粹的C ++只有一些语言扩展,可以更轻松地处理WinRT类型。这不适合使用Platform :: String类型,它是不是通用字符串类。这已经被标准C ++库所涵盖。该课程被故意削弱,以阻止您的用法。这MSDN library article解释得很好:
在Windows运行时类中的方法来回传递字符串时,或者在跨应用程序二进制接口(ABI)边界与其他Windows运行时组件交互时,请使用Platform :: String类。 Platform :: String Class提供了几种常见字符串操作的方法,但它并不是一个功能齐全的字符串类。在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));