我想使用 std::wstring 类型编写 ChaiScript 代码,如下面的 c++ 代码。
#include <iostream>
int testfunc(std::wstring s, std::wstring t)
{
if(s==t)
{
std::cout << "1" << std::endl;
}
if(s[1]==t[1])
{
std::cout << "2" << std::endl;
}
if(s==L"aaaa")
{
std::cout << "3" << std::endl;
}
if(s[1]==L'b')
{
std::cout << "4" << std::endl;
}
return 5;
}
int main()
{
std::cout << testfunc(std::wstring(L"abcd"), std::wstring(L"abbb"));
return 0;
}
D:\TestWork\test_chaiscript>t6
2
4
5
比较 std::wstring 类型的实例很好。
#include <iostream>
#include <chaiscript/chaiscript.hpp>
#include <chaiscript/chaiscript_stdlib.hpp>
#include <chaiscript/dispatchkit/bootstrap_stl.hpp>
int main()
{
chaiscript::ChaiScript chai(chaiscript::Std_Lib::library());
chai.add(chaiscript::bootstrap::standard_library::string_type<std::wstring>("wstring"));
std::cout << chai.eval<std::function<int (std::wstring, std::wstring)> >(
"fun(s, t){"
" if(s==t){"
" print(\"1\");"
" }"
" return 3;"
"}"
)(std::wstring(L"abcd"), std::wstring(L"abaa"));
return 0;
}
D:\TestWork\test_chaiscript>t5
3
比较 wchar_t 类型的实例不起作用。
是否必须添加比较运算符方法?
" if(s[1]==t[1]){"
" print(\"2\");"
" }"
D:\TestWork\test_chaiscript>t5
terminate called after throwing an instance of 'chaiscript::exception::eval_error'
what(): Error: "Error with numeric operator calling: =="
将 std::wstring 类型的实例与字符串类型的文字进行比较是行不通的。我无法输入 wstring 类型的文字。
是否可以在 ChaiScript 中输入 wstring 类型的文字?
" if(s==\"aaaa\"){"
" print(\"2\");"
" }"
D:\TestWork\test_chaiscript>t5
terminate called after throwing an instance of 'chaiscript::exception::eval_error'
what(): Error: "Can not find appropriate '==' operator." With parameters: (wstring, const string)
将 wchar_t 类型的实例与 wchar_t 类型的文字进行比较是行不通的。我无法输入 wchat_t 类型的文字。
是否可以在 ChaiScript 中输入 wchat_t 类型的文字?
" if(s[1]=='b'){"
" print(\"2\");"
" }"
D:\TestWork\test_chaiscript>t5
terminate called after throwing an instance of 'chaiscript::exception::eval_error'
what(): Error: "Error with numeric operator calling: =="