小编Vir*_*721的帖子

Windows上未签名的__int64的printf格式

我需要打印一个ULONGLONG值(unsigned __int64).我应该使用什么格式printf?我%llu在另一个问题中找到了,但他们说它只适用于linux.

谢谢你的帮助.

c c++ windows printf unsigned

22
推荐指数
3
解决办法
6万
查看次数

UTF-32和UCS-4有什么区别?

UTF-32和UCS-4有什么区别?是不是UTF-32应该是固定宽度的编码?

string unicode encoding char utf

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

PHP - 检查数组索引是否存在或为空

有没有办法检查数组索引是否存在或为空isset()不会告诉您索引是否存在或存在但是为空.如果我这样做:isset($array[$index]) || is_null($array[$index])它将无法工作,因为如果索引不存在,is_null将崩溃.

我该怎么办?还有一种方法可以检查是否存在某些东西,无论它是否设置为null?

php arrays indexing null isset

20
推荐指数
3
解决办法
4万
查看次数

PHP 5.4 - 特征和自我/静态

我想在我的类上链接方法调用,如下所示:

new Obj($args, $if, $any)->foo()->bar();
Run Code Online (Sandbox Code Playgroud)

不幸的是,我必须将结构括在括号内:

(new Obj($args, $if, $any))->foo()->bar();
Run Code Online (Sandbox Code Playgroud)

所以我想有一个特点,我可以在每个我想要能够做的事情的类中重复使用:

Obj::create($args, $if, $any)->foo()->bar();
Run Code Online (Sandbox Code Playgroud)

我希望它是一个特征,所以我的类仍然可以从其他类继承.我来到这一点:

trait Create
{
    public static final function create()
    {
        $reflect = new ReflectionClass(/* self ? static ? Anything else ? */);
        return $reflect->newInstanceArgs(func_get_args());
    }
}

class Obj
{
    use Create;

    // ...
}
Run Code Online (Sandbox Code Playgroud)

但似乎特征不处理自我或静态关键字,我不能这样做,get_class($this)因为这是静态的.有没有明确的方法来做我想要的事情?

谢谢阅读.

编辑:对于那些想知道的人,这就是为什么我希望它成为一个特征而不是一个抽象的基类:

$database = (new Database())
    ->addTable((new Table())
        ->addColumn((new Column('id', 'int'))
            ->setAttribute('primary', true)
            ->setAttribute('unsigned', true)
            ->setAttribute('auto_increment', true))
        ->addColumn(new Column('login', 'varchar'))
        ->addColumn(new Column('password', 'varchar')));

$database = Database::create()
    ->addTable(Table::create()
        ->addColumn(Column::create('id', 'int') …
Run Code Online (Sandbox Code Playgroud)

php static constructor traits

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

Lua - 字符串行为的数字

我想知道Lua如何使用该tostring()函数处理数字到字符串转换.

它将转换为int(作为字符串),如果数字是圆的(即if number == (int) number)或是否总是输出一个真实的(如字符串)10.0

我需要模仿Lua tostring在C中的确切行为,而不使用Lua C API,因为在这种情况下,我没有使用lua_State.

c lua tostring

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

继承自std :: basic_streambuf以写入套接字

我想编写一个我自己的日志库,它为日志条目的发送位置提供抽象.

C++的IO库已经用std::stringstream和提供了那种抽象std::fstream.我也希望能够从/向套接字读/写.

我读到扩展标准库的正确方法是继承std::basic_streambuf.我不明白的是,如果继承std::basic_streambufstd::basic_filebuf呢,哪里是需要的std::ifsream,std::ofstreamstd::fstream班?我不能只用一个子类的实例替换某些流的缓冲区,该子类的std::basic_streambuf输出输出到我想要的地方吗?

到目前为止,我已经完成了以下工作,但我真的不确定我在做什么.以下设计是否正确?

template< typename char_type, typename traits_type = std::char_traits< char_type > >
class basic_sock_streambuf : public std::basic_streambuf< char_type, traits_type >
{
public:

    basic_sock_streambuf()
    {

    }

    ~basic_sock_streambuf()
    {

    }

    int overflow (int c = EOF)
    {
        fputc( c, stdout ); // Temporary.
        return traits_type::to_int_type( c );
    }

    int underflow()
    {
        return fgetc( stdout ); // Temporary.
    }

    int sync()
    {
        return …
Run Code Online (Sandbox Code Playgroud)

c++ inheritance iostream stream streambuf

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

在修改/允许修改引用值而不触及字段本身的方法上使用或不使用const

我不确定完全理解在类方法中使用的const关键字背后的哲学.

我一直认为在类方法的签名中使用const关键字意味着此方法不会修改它所调用的对象的字段.但是当我们使用例如一个向量时,operator []的重载不是const:

whateverT & vector<whateverT>::operator [] ( size_t pos )
Run Code Online (Sandbox Code Playgroud)

无论您对给定的引用做什么,它都不会对向量的字段执行任何修改,即使引用的项目被修改也是如此.

另一个例子 :

template<class T> class Array
{
    T * _items;

    T & operator [] ( size_t pos ) const
    {
        return _items[ pos ];
    }
}
Run Code Online (Sandbox Code Playgroud)

我可以在这里使用const关键字,因为_items的值没有被修改(无论我们用它指向的是什么).对于编译器来说这是正确的,但如果我访问其中一个项并修改它,operator []将允许修改数组,即使它应该是const,即假设不修改数组的"内容".

在这种情况下该怎么办?使用或不使用const关键字?

谢谢 :)

c++ methods const class semantics

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

Lua - 本地所需的eveytime分配了一个局部变量?

我在Lua文档中发现了一段奇怪的代码:

function trim8(s)
  local i1,i2 = find(s,'^%s*')
  if i2 >= i1 then s = sub(s,i2+1) end
  local i1,i2 = find(s,'%s*$')
  if i2 >= i1 then s = sub(s,1,i1-1) end
  return s
end
Run Code Online (Sandbox Code Playgroud)

为什么local再次使用i1i2?它们是否已在局部变量中声明?local每次要分配关键字时,是否必须重复关键字?

lua

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

PDO对象可以存储在会话中吗?

我有两个问题:

  • 要从PDO预处理语句中受益,我应该首先使用PDO对象准备语句:

    $ statement = $ pdo-> prepare($ query,$ bindings);

然后将这个$语句存储在$ _SESSION中并重用此语句,或者下次我想要执行相同的查询(具有不同的绑定值)时,我是否应该再次执行相同的操作(PDO :: prepare)?

  • 在创建PDO对象时使用PDO :: ATTR_PERSISTENT时,将PDO对象存储在$ _SESSION中是否有用?

php session pdo

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

PHP - __call一直都是

假设我们有一个包含多个受保护和/或公共方法的类.我需要在每次调用方法时执行检查.每次调用方法时我都可以检查:

class Object
{
    // Methods
}

$o = new Object();

if($mayAccess) $o->someMethod();
Run Code Online (Sandbox Code Playgroud)

要么

if($mayAccess) $this->someMethod();
Run Code Online (Sandbox Code Playgroud)

但我希望开发人员不必考虑它,也不要写它.我已经考虑过使用__call来做:

class Object
{
    public function __call($methodName, $args)
    {
        if($mayAccess) call_user_func_array($this->$methodName, $args);
    }
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,如果我从类中调用该方法,则不会调用__call,因为它仅在调用非可见方法时才起作用.

是否有一种干净的方法来隐藏内部和外部呼叫的检查?再次,目标是确保开发人员在调用方法时不会忘记这样做.

提前致谢 :)

EDIT :
Run Code Online (Sandbox Code Playgroud)

我有另一种方法:

class Object
{
    public function __call($methodName, $args)
    {
        if($mayAccess) call_user_func_array($methodName, $args);
    }
}

function someMethod() { }
Run Code Online (Sandbox Code Playgroud)

但我将无法使用$ this,这意味着没有受保护的方法,我确实需要.

php methods call magic-methods

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