小编ama*_*jxq的帖子

复制一些大于dst的内容时,memcpy()是否安全?

request_token.size()大于LEN?时安全吗?

char dst[LEN];
memcpy(dst, request_token.c_str(), request_token.size());
Run Code Online (Sandbox Code Playgroud)

c c++ memcpy

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

如何让两个对象在python中具有相同的id?

如果我有如下课程:

class Point(object):
    def __init__(self, x, y):
        self.x = x
        self.y = y
Run Code Online (Sandbox Code Playgroud)

并有2个对象:

a = Point(1,2)
b = Point(1,2)
Run Code Online (Sandbox Code Playgroud)

如何修改类Point id(a) == id(b)

python identity object

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

为什么boost :: shared_ptr使用gcc内联汇编来增加use_count而不是使用operator ++?

我正在阅读boost::shared_ptr源代码并发现它使用此函数来增加shared_ptr的使用计数(引用计数):

inline void atomic_increment( int * pw )
{
    //atomic_exchange_and_add( pw, 1 );

    __asm__
    (
        "lock\n\t"
        "incl %0":
        "=m"( *pw ): // output (%0)
        "m"( *pw ): // input (%1)
        "cc" // clobbers
    );
}
Run Code Online (Sandbox Code Playgroud)

为什么不简单地使用operator++这样做呢?这会带来更好的表现吗?

c++ boost thread-safety shared-ptr atomicity

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

在python中将GBK转换为utf8字符串

我有一个字符串.

s = u"<script language=javascript>alert('\xc7\xeb\xca\xe4\xc8\xeb\xd5\xfd\xc8\xb7\xd1\xe9\xd6\xa4\xc2\xeb,\xd0\xbb\xd0\xbb!');location='index.asp';</script></script>"
Run Code Online (Sandbox Code Playgroud)

我怎样才能翻译s成utf-8字符串?我试过s.decode('gbk').encode('utf-8')但是python报告错误:UnicodeEncodeError: 'ascii' codec can't encode characters in position 35-50: ordinal not in range(128)

python utf-8 gbk

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

为什么我不能匹配使用/(子模式)可能出现0或1次的子字符串?/

原始字符串是这样的:

checksession ok:6178 avg:479 avgnet:480 MaxTime:18081 fail1:19

最后一部分" fail1:19 "可能会出现0或1次.我试图匹配" fail1: " 之后的数字,即19,使用这个:

($reg_suc, $reg_fail) = ($1, $2) if $line =~ /^checksession\s+ok:(\d+).*(fail1:(\d+))?/;
Run Code Online (Sandbox Code Playgroud)

它不起作用.即使" fail1:19 "确实存在,$ 2变量也是空的.如果我删除"?",它只有在" fail1:19 "部分存在时才能匹配.$ 2变量将是" fail1:19 ".但如果" fail1:19 "部分不存在,$ 1和$ 2都不匹配.这是不正确的.

如何重写此模式以正确捕获2号码?这意味着当存在" fail1:19 "部分时,将记录两个数字,当它不退出时,仅记录" ok: " 之后的数字.

regex perl

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

奇怪的模板参数列表错误太少

set<unsigned int> setId;
vector<int> vecNode;
for (size_t i = 0,set<unsigned int>::iterator it = setId.begin(); i < vecNode.size() && it != setId.end(); i++,it++ ){}
Run Code Online (Sandbox Code Playgroud)

编译器报告:错误:模板参数列表太少

但如果我这样写:

set<unsigned int> setId;
vector<int> vecNode;
size_t i = 0;
for (set<unsigned int>::iterator it = setId.begin(); i < vecNode.size() && it != setId.end(); i++,it++ ){}
Run Code Online (Sandbox Code Playgroud)

编译成功.

所以为什么?

c++ gcc

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

标签 统计

c++ ×3

python ×2

atomicity ×1

boost ×1

c ×1

gbk ×1

gcc ×1

identity ×1

memcpy ×1

object ×1

perl ×1

regex ×1

shared-ptr ×1

thread-safety ×1

utf-8 ×1