小编Mag*_*gix的帖子

从字符串中删除所有空格

如何从字符串中删除所有空格?我可以想到一些显而易见的方法,例如遍历字符串并删除每个空白字符,或使用正则表达式,但是这些解决方案并不那么具有表现力或效率。什么是从字符串中删除所有空格的简单有效的方法?

regex whitespace removing-whitespace rust

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

针对SQL注入的有效保护功能

我在自由软件中找到了这个消毒功能:

function VerifChamps($valeur)
{
$verif = (get_magic_quotes_gpc()) ? htmlentities($valeur, ENT_QUOTES) : addslashes($valeur);
return $verif;
}
Run Code Online (Sandbox Code Playgroud)

然后查询完成如下:

$login=VerifChamps($_POST['name']);

mysql_select_db(..., ...);
$query = sprintf("SELECT * FROM table WHERE login='%s'", $login);

$Result = mysql_query($query, $connexion) or die(mysql_error());
$row_RsProf = mysql_fetch_assoc($Result);
mysql_free_result($Result);
Run Code Online (Sandbox Code Playgroud)

这段代码有多安全?如何改进它以使其更安全?

编辑:服务器正在运行PHP v5.2.13,启用了Magic Quotes

php mysql sql sanitization sql-injection

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

创建 std::vector 时,“结果类型必须可从输入范围的值类型构造”

我有一个看起来像这样的班级成员

class Controller {
    protected:
    // other stuff
    std::vector<Task<event_t, stackDepth>> taskHandlers; 

    //some more stuf
}
Run Code Online (Sandbox Code Playgroud)

该Task班是不可缺省构造,非可复制构造,非copyAssignable但moveConstructible和moveAssignable。我可以阅读的所有内容(特别是std::vector文档)使我认为这应该可以编译,但错误列表如下所示(此处为完整输出):

/usr/include/c++/9/bits/stl_uninitialized.h:127:72: error: static assertion failed: result type must be constructible from value type of input range
  127 |       static_assert(is_constructible<_ValueType2, decltype(*__first)>::value,
      |                                                                        ^~~~~
Run Code Online (Sandbox Code Playgroud)

使TaskdefaultConstructible 没有帮助。错误指向类的定义Controller。我在 c++17 模式下使用 GCC 9.3.0。我做错了什么吗?

c++ compiler-errors initialization vector move-semantics

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

我是否需要uintXX_t的'unsigned'关键字?

我刚刚发现了固定大小的类型,可以在stdint.h/cstdint中找到.其中一些是"普通"类型,如int32_t,一些设计为无符号,如uint64_t.在使用未设计的类型时,是否需要使用"unsigned"关键字?

c c++ unsigned types

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

__builtin_avr_delay_cycles实现说明

让我们考虑为atmega32编译的以下简单C代码:

_delay_ms(1000);
Run Code Online (Sandbox Code Playgroud)

它被翻译成以下程序集:

00000039  SER R18       Set Register 
0000003A  LDI R24,0x69      Load immediate 
0000003B  LDI R25,0x18      Load immediate 
0000003C  SUBI R18,0x01     Subtract immediate 
0000003D  SBCI R24,0x00     Subtract immediate with carry 
0000003E  SBCI R25,0x00     Subtract immediate with carry 
0000003F  BRNE PC-0x03      Branch if not equal 
00000040  RJMP PC+0x0001        Relative jump 
00000041  NOP       No operation 
Run Code Online (Sandbox Code Playgroud)

当这行:

_delay_ms(500);
Run Code Online (Sandbox Code Playgroud)

编译为此:

00000039  SER R18       Set Register 
0000003A  LDI R24,0x34      Load immediate 
0000003B  LDI R25,0x0C      Load immediate 
0000003C  SUBI R18,0x01     Subtract immediate 
0000003D  SBCI R24,0x00     Subtract …
Run Code Online (Sandbox Code Playgroud)

c embedded assembly avr delay

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

remove_if 不需要移动和复制语义

这是一个典型的向量删除-擦除操作的样子:

auto toErase = std::remove_if(vec.begin(), vec.end(),
   [val](obj_t const& obj) { return obj.myval == val; }
); // This actually moves objects around !

vec.erase(toErase, vec.end()); 
Run Code Online (Sandbox Code Playgroud)

这在大多数情况下都可以正常工作,但我遇到了obj_t类型不允许移动或复制语义的情况。对象是用 插入的vec.emplace_back(),我正在寻找一种remove_if不需要复制或移动的替代方法。

它是否已经存在于某处?如果没有,它将如何建造?

c++ algorithm vector c++-standard-library move-semantics

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