小编Lan*_*nbo的帖子

在C++中处理UTF-8

要了解C++是否是我的项目的正确语言,我想测试UTF-8功能.根据参考资料,我建立了这个例子:

#include <string>
#include <iostream>

using namespace std;

int main() {
    wstring str;
    while(getline(wcin, str)) {
        wcout << str << endl;
        if(str.empty()) break;
    }

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

但是当我输入一个UTF-8字符时,它行为不端:

$ > ./utf8 
Hello
Hello
für
f
$ >
Run Code Online (Sandbox Code Playgroud)

它不仅不会打印ü,而且会立即退出.gdb告诉我没有崩溃,但正常退出,但我发现很难相信.

c++ linux stl utf-8 wstring

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

<canvas>和<div>的效率

我想问一下是否有人能给我一些我想做的设计决定的提示.

我的项目将包含一些精灵(一次在屏幕上预期10到30个),并且有几种方法可以实现它们.一种方法是CSS-Sprites,另一种方法是在画布上绘制它们.两者都不难.背景将是另一个<canvas>在后台绘制的图块地图.

我已经看到Crafty附加了Sprites,<div>因为它在HTML中<canvas>作为CSS-Sprite.我不确定如果<div>在画布中是否存在速度差异.有区别吗?

我希望用户通过鼠标点击,左,右等与精灵交互.精灵当然是在瓷砖地图的元素上站立或行走.那么编写一个处理程序<canvas>并找到精灵更有效率,或者更确切地说使用<div>并让浏览器处理这个发现?

我希望我可以传达我的问题.

performance html5 canvas css-sprites

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

HUTell的GLUT替代品?

我不想使用GLUT,因为它没有类似Haskell的感觉.IORef由于回调,它基本上迫使你使用等等.

我考虑过GLFW,这似乎很简单,让我在monad中进行游戏循环.但它似乎有不同的硬件问题,例如,它在我的笔记本电脑上工作正常,但不在我的桌面上.在窗户上,纹理消失了.

所以我想通过SDL进入,但是Windows依赖关系可能存在问题,我只是不知道需要哪个DLL.

那么打开OpenGL窗口还剩下什么呢?

opengl glut haskell sdl glfw

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

在Mongoose中加载后更改模型值

在我的猫鼬模型中,我有一些stats依赖于时间.我的想法是在模型加载后立即添加一个中间件来更改这些统计信息.

不幸的是,关于post-Hooks 的文档有点缺乏清晰度.好像我可以使用这样的钩子:

schema.post('init', function(doc) {
    doc.foo = 'bar';
    return doc;
});
Run Code Online (Sandbox Code Playgroud)

他们唯一的例子涉及 - console.log输出.它不以任何方式解释是否doc必须返回或者后挂钩的变化根本不可能(因为它不是异步的,因此对于复杂的想法可能没什么用处).

如果preon 'init'不是在加载时自动更新模型的正确方法,那么它是什么?

javascript mongoose node.js

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

提升::精神表达解析器

我的boost :: spirit解析器还有另外一个问题.

template<typename Iterator>
struct expression: qi::grammar<Iterator, ast::expression(), ascii::space_type> {
    expression() :
        expression::base_type(expr) {
        number %= lexeme[double_];
        varname %= lexeme[alpha >> *(alnum | '_')];

        binop = (expr >> '+' >> expr)[_val = construct<ast::binary_op<ast::add>>(_1,_2)]
              | (expr >> '-' >> expr)[_val = construct<ast::binary_op<ast::sub>>(_1,_2)]
              | (expr >> '*' >> expr)[_val = construct<ast::binary_op<ast::mul>>(_1,_2)]
              | (expr >> '/' >> expr)[_val = construct<ast::binary_op<ast::div>>(_1,_2)] ;

        expr %= number | varname | binop;
    }

    qi::rule<Iterator, ast::expression(), ascii::space_type> expr;
    qi::rule<Iterator, ast::expression(), ascii::space_type> binop;
    qi::rule<Iterator, std::string(), ascii::space_type> varname;
    qi::rule<Iterator, …
Run Code Online (Sandbox Code Playgroud)

c++ boost-spirit boost-phoenix

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

使用ImageMagick将优化的gif转换为单帧

我有一些我想使用的创意Commons GIF,但我需要它们作为单帧.但是,gif是优化的,所以当我把它拉开时

convert the.gif frames/%02d.tga
Run Code Online (Sandbox Code Playgroud)

一些图像只是片段不合适,并且比原始图像小.

那么有没有一种方法可以在查看器中查看单帧?

imagemagick gif

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

如何将rails会话cookie到期时间设置为"session"

对于不在表面上的Rails部分,我不是很有经验.

我想要的是拥有一个会话cookie,该会话cookie的到期时间设置为session当用户离开浏览器或其他任何内容时到期.作为安全措施.

ruby session ruby-on-rails session-timeout

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

覆盖var的setter

一个小问题,希望是一个很小的答案:

var我的班级中有一个需要在设置时触发某种更新.我知道var隐式获取两个方法,一个getter和一个setter.是否有可能以某种方式覆盖setter方法以确保更新被触发,而不会递归?我的意思是

def a_=(x: Any) = { a = x; update }
Run Code Online (Sandbox Code Playgroud)

可能是无限递归,对吗?

var只设置类之外,只读类里面,也许有帮助.

谢谢收听.

scala

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

支持UTF-8的C++解析库

假设我想为编程语言(EBNF已知)创建解析器,并希望尽可能少地完成它.另外,我想支持任何UTF-8字母的标识符.我想用C++.

flex/我bison有一个不存在的UTF-8支持,因为我读了它.ANTLR似乎没有可用的C++输出.

我考虑过boost :: spirit,他们在他们的网站上声明它实际上不适合完整的解析器.

还剩下什么?每手完全滚动?

c++ parsing utf-8

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

从boost :: spirit解析器中检索AST

在我阅读了关于boost :: spirit教程之后,由于解析器组合器语法,我非常喜欢它.制作解析器非常简单.

遗憾的是,在从解析器中获取复杂数据结构的问题上,教程并不那么精确.我正试图进入Kaleidoscope AST.

无论如何,这是我的AST代码:

#ifndef __AST_HPP__
#define __AST_HPP__

#include <boost/fusion/include/adapt_struct.hpp>
#include <boost/variant/recursive_variant.hpp>
#include <boost/lexical_cast.hpp>
#include <boost/variant/apply_visitor.hpp>
#include <string>
#include <vector>

namespace ast {

struct add;
struct sub;
struct mul;
struct div;
struct func_call;
template<typename OpTag> struct binary_op;

typedef boost::variant<double, std::string, boost::recursive_wrapper<binary_op<
        add>>, boost::recursive_wrapper<binary_op<sub>>,
        boost::recursive_wrapper<binary_op<mul>>, boost::recursive_wrapper<
                binary_op<div>>, boost::recursive_wrapper<func_call>>
        expression;

template<typename OpTag>
struct binary_op {
    expression left;
    expression right;

    binary_op(const expression & lhs, const expression & rhs) :
        left(lhs), right(rhs) {
    }
};

struct …
Run Code Online (Sandbox Code Playgroud)

c++ templates boost-spirit boost-spirit-qi

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