小编Zac*_*Lee的帖子

如何动态创建转义序列?

我正在尝试创建一个可以动态形成转义序列字符的程序.请看下面的代码.

void ofApp::keyPressed(int key){

    string escapeSeq;
    escapeSeq.push_back('\\');
    escapeSeq.push_back((char)key);

    string text = "Hello" + escapeSeq + "World";
    cout << text << endl;
}
Run Code Online (Sandbox Code Playgroud)

例如,如果我按'n'键,我希望它打印出来

你好

世界

但它确实打印出来了

你好\nWorld

如何使程序运行?提前致谢!

c++ escaping character sequence

2
推荐指数
1
解决办法
77
查看次数

通过 require 在不同 Lua 状态之间共享全局变量

我试图找到一种方法来test.lua在不同的 Lua 状态之间共享特定 Lua 脚本(在示例中)的全局变量。

这是我的简单示例代码:

test.lua

num = 2
Run Code Online (Sandbox Code Playgroud)

main.cpp

#include <iostream>
#include <lua.hpp>
int main() 
{    
    lua_State *L1 = luaL_newstate(); //script A
    luaL_openlibs(L1);
    lua_settop(L1, 0);
    luaL_dostring(L1, "require('test') num = 5");

    lua_State *L2 = luaL_newstate(); //script B
    luaL_openlibs(L2);
    lua_settop(L2, 0);
    luaL_dostring(L2, "require('test') print(num)");

    lua_close(L1);
    lua_close(L2);
}
Run Code Online (Sandbox Code Playgroud)

我希望得到,5但我得到了2

不能在不同的lua_State*through之间共享全局变量require吗?

添加 :

如果不可能,那么在 C++ 中打开test.luausingluaL_loadfile然后创建 getter/setter 方法以num在脚本A和之间共享变量是个好主意B吗?

例如像这样,

脚本A: …

c++ lua

2
推荐指数
1
解决办法
1388
查看次数

如何从其他脚本访问本地表变量

我的代码:

lua_State *L = luaL_newstate();
luaL_openlibs(L);
lua_settop(L, 0);
//Script A
luaL_dostring(L, "A = {} A.num = 3");
//Script B
luaL_dostring(L, "B = {} function B.update() return A.num * 2 end");
//Script C
luaL_dostring(L, "print(B.update())"); 
lua_close(L);
Run Code Online (Sandbox Code Playgroud)

结果: 6

但是,如果我像下面这样制作表AB本地:

lua_State *L = luaL_newstate();
luaL_openlibs(L);
lua_settop(L, 0);
//Script A
luaL_dostring(L, "local A = {} A.num = 3");
//Script B
luaL_dostring(L, "local B = {} function B.update() return A.num * 2 end");
//Script C
luaL_dostring(L, "print(B.update())"); 
lua_close(L);
Run Code Online (Sandbox Code Playgroud)

它不输出任何东西.

如何使第二个代码工作,两者之间更有推荐的设计? …

lua

2
推荐指数
1
解决办法
102
查看次数

Lua 中的 package.preload 替代方案?

我了解到package.preload可以用来将一个脚本公开给其他脚本。

这是我的示例代码。

lua_State *L = luaL_newstate();
luaL_openlibs(L);
lua_settop(L, 0);
//Script A
luaL_dostring(L, "local A = {} package.preload['A'] = function () return A end A.num = 3"); 
//Script B
luaL_dostring(L, "local A = require 'A' print(A.num)"); 
lua_close(L);
Run Code Online (Sandbox Code Playgroud)

结果:3

虽然这工作正常,但我想知道 ScriptA的代码是否可以更加简化,或者是否有其他替代解决方案将脚本公开给其他脚本。

补充:我问这个的主要原因是因为我认为package.preload['A'] = function () return A end写起来很长而且很无聊。

c++ lua

2
推荐指数
1
解决办法
2513
查看次数

如何在Lua中重命名(或移动)变量?

我想在Lua中重命名一些变量以便于使用。

我可以简单地使用不同的名称来创建别名,但是我担心会浪费一些内存。

在这种情况下,我可以简单地分配nil给旧变量吗?

这是我的示例代码:(尝试重命名my.tabmyTab

print(type(my.tab))
myTab = my.tab
my.tab = nil
print(type(my.tab))
print(type(myTab))
Run Code Online (Sandbox Code Playgroud)

结果:

table
nil
table
Run Code Online (Sandbox Code Playgroud)

尽管这种方法似乎可行,但我想问一下这是否是一种安全且正确的方法来重命名Lua中的变量。

lua

2
推荐指数
1
解决办法
51
查看次数

从2D向量中找出最小尺寸的向量元素的更好方法

我正在尝试从中找出最小的vector<int>元素vector<vector<int>>

这是我的代码,但是将向量迭代两次。

#include <iostream>
#include <vector>
#include <limits>

int main()
{
    std::vector<std::vector<int>> foo = {{1,2,3,4}, {1,2}, {1,2,3,4,5}, {1,2,3}};
    size_t smallestNumElems = std::numeric_limits<size_t>::max();
    for (size_t i = 0; i < foo.size(); ++i)
    {
        const size_t numElems = foo[i].size();
        if (smallestNumElems > numElems)
            smallestNumElems = numElems;
    }
    for (size_t i = 0; i < foo.size(); ++i)
    {
        if (smallestNumElems == foo[i].size())
        {
            for (size_t j = 0; j < foo[i].size(); ++j)
                std::cout << foo[i][j] << '\n';
            break;
        } …
Run Code Online (Sandbox Code Playgroud)

c++ algorithm vector minimum

2
推荐指数
2
解决办法
82
查看次数

是否可以动态地将函数分配给函数指针?

是否可以funcmain()没有实际功能的情况下以某种方式声明函数并将其分配给函数指针add()

当前代码:

#include <iostream>

int add(int a, int b)
{
    return a + b;
}

int main()
{
    typedef int (*funcPtr)(int a, int b);
    funcPtr func = &add;
    std::cout << func(2,3) << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

首选样式:(如果可能)

#include <iostream>

int main()
{
    typedef int (*funcPtr)(int a, int b);
    funcPtr func = (funcPtr){return a + b}; // is something like this possible?
    std::cout << func(2,3) << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

有没有办法像我上一个代码一样动态地将函数分配给函数指针?

c++

2
推荐指数
1
解决办法
56
查看次数

将bool浮起来安全吗?

我想知道直接投射boolfloat是否可以安全使用。

这是我的代码:

#include <iostream>

using namespace std;

int main()
{
    bool b1 = false;
    bool b2 = true;
    float f1 = static_cast<float>(b1);
    float f2 = static_cast<float>(b2);
    cout << "False in float : " << f1 << endl;
    cout << "True in float : " << f2 << endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

结果:

False in float : 0                                                                                          
True in float : 1   
Run Code Online (Sandbox Code Playgroud)

结果在所有C ++编译器和平台上都一样吗?

c++

2
推荐指数
1
解决办法
115
查看次数

在push_back()之前保留非空std :: vector的正确方法

我混淆是否Nvector::reserve(N)是元素,它预计要在电流矢量的大小或者所述载体的总空间的顶部增加的号码。

例如,

#include <iostream>
#include <vector>

int main()
{
    std::vector<int> foo;

    foo.reserve(3);
    foo.push_back(1);
    foo.push_back(2);
    foo.push_back(3);

    foo.reserve(foo.size() + 2);// Should this be foo.reserve(2)?
    foo.push_back(4);
    foo.push_back(5);
}
Run Code Online (Sandbox Code Playgroud)

应该foo.reserve(foo.size() + 2)是公正的foo.reserve(2)吗?

c++

1
推荐指数
1
解决办法
47
查看次数

如何线性插值 THREE.Object3d() 的旋转值?

我正在尝试将玩家(THREE.Object3d())的位置和旋转值线性插值到所需的(THREE.Vector3())。

这是我的代码:

player.position.lerp(desiredPosition, 0.2);
player.rotation.lerp(desiredRotation, 0.2);
Run Code Online (Sandbox Code Playgroud)

但我收到以下错误:

未捕获的类型错误:player.rotation.lerp 不是函数

我知道有一个player.quaternion.slerp()函数,但是有没有办法x, y, z在不使用四元数的情况下插入旋转值?

如果没有,我怎样才能将desiredRotation( THREE.Vector3())转换为THREE.Quaternion()这样我就可以使用该slerp()函数了?

three.js

1
推荐指数
1
解决办法
1736
查看次数

标签 统计

c++ ×7

lua ×4

algorithm ×1

character ×1

escaping ×1

minimum ×1

sequence ×1

three.js ×1

vector ×1