【发布时间】:2012-06-23 08:04:49
【问题描述】:
所以我从运行时传递一个字符串值作为函数参数:
Handle<Value> xObj::Whatever(const Arguments& args){ ... // etc.
args[0] 绝对应该是字符串:
if(!args[0]->IsString()) { ThrowException(... // etc.
既然我们有了它,我该如何将它转换成有用的东西,例如 LPCWSTR、wchar_t、char[] 或其他什么?
MessageBox(NULL, args[0], L"Your value, sir.",0); // no way
MessageBox(NULL, args[0]->ToString(), L"Your value, sir.",0); // also no
/// then how?
【问题讨论】:
-
GetExternalStringResource()方法返回一个ExternalStringResource。您可以在此返回的字符串资源上调用data()以获取const char *。确保在使用字符串资源之前检查IsExternal是否为真,即调用成员data()。或者,你需要一个宽字符串吗? -
要转换成宽字符串,你可以使用 A2W 宏之类的东西。
-
@dirkgently 这是
const uint16_t * ::ExternalStringResource::data ()我该怎么处理它? -
该死!错误的链接。您可能可以使用ExternalAsciiStringResource。
-
不确定这里要做什么?不知道为什么在 MessageBox 中使用常量是一个限制。内容易于使用且不受限制。对于任何 if then 场景,都不需要变量代替常量。