首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ChaiScript中的wstring

ChaiScript中的wstring
EN

Stack Overflow用户
提问于 2015-06-13 07:07:13
回答 1查看 379关注 0票数 2

我是ChaiScript的初学者。

我尝试在std::wstring中使用ChaiScript类型。

string类型很好。

代码语言:javascript
复制
#include <iostream>
#include <chaiscript/chaiscript.hpp>
#include <chaiscript/chaiscript_stdlib.hpp>

int main()
{
    chaiscript::ChaiScript chai(chaiscript::Std_Lib::library());

    std::cout << chai.eval<std::function<int (std::string)> >(
        "fun(s){"       
        "   if(s==\"aaa\"){"
        "       print(\"1\");"      
        "   }"      
        "   if(s[1]=='b'){"
        "       print(\"2\");"
        "   }"
        "   return 3;"
        "}"
    )(std::string("abcd")); 
}

D:\TestWork\test_chaiscript>t1.exe
2
3

std::wstring类型会引发异常。

代码语言:javascript
复制
#include <iostream>
#include <chaiscript/chaiscript.hpp>
#include <chaiscript/chaiscript_stdlib.hpp>

int main()
{
    chaiscript::ChaiScript chai(chaiscript::Std_Lib::library());

    std::cout << chai.eval<std::function<int (std::wstring)> >(
        "fun(s){"       
        "   if(s==\"aaa\"){"
        "       print(\"1\");"      
        "   }"      
        "   if(s[1]=='b'){"
        "       print(\"2\");"
        "   }"
        "   return 3;"
        "}"
    )(std::wstring(L"abcd"));
}

D:\TestWork\test_chaiscript>t2.exe终止调用后,抛出'chaiscript::exception::eval_error‘什么():错误:“找不到适当的'==’操作符。”参数:(NSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEE,const字符串) 此应用程序请求运行时以一种不寻常的方式终止它。有关详细信息,请联系应用程序的支持团队。

使用了ChaiScript git版本和mingw-w64版本5.1.0。

代码语言:javascript
复制
g++ t2.cpp -std=c++14 -O2 -Os -Wall -mthreads -o t2.exe -DWIN32 -D_WIN32 -DUNICODE -D_UNICODE -Id:\myprj\chaiscript_git\include -static-libstdc++ -static-libgcc -Wl,-Bstatic -lstdc++ -lpthread -Wl,-Bdynamic

这在vs2013中是一样的。

如何在std::wstring中使用ChaiScript类型?

EN

回答 1

Stack Overflow用户

发布于 2015-06-14 02:58:06

std::wstring就像ChaiScript中的其他类型一样--你必须告诉ChaiScript你想如何使用它。

在本例中,您正在尝试执行==比较,但没有为ChaiScript提供一个供其使用的operator==(const std::wstring &, const std::wstring &)函数。

最简单的方法是使用std::string的现有代码并公开所有相同的功能。

例如:

代码语言:javascript
复制
#include <chaiscript/dispatchkit/bootstrap_stl.hpp>

chai.add(chaiscript::bootstrap::standard_library::string_type<std::wstring>("wstring"));

有关参考,请参阅初始化bootstrap.hpp代码std::string

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30816033

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档