如何从字符串中删除所有空格?我可以想到一些显而易见的方法,例如遍历字符串并删除每个空白字符,或使用正则表达式,但是这些解决方案并不那么具有表现力或效率。什么是从字符串中删除所有空格的简单有效的方法?
我在自由软件中找到了这个消毒功能:
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
我有一个看起来像这样的班级成员
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。我做错了什么吗?
我刚刚发现了固定大小的类型,可以在stdint.h/cstdint中找到.其中一些是"普通"类型,如int32_t,一些设计为无符号,如uint64_t.在使用未设计的类型时,是否需要使用"unsigned"关键字?
让我们考虑为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) 这是一个典型的向量删除-擦除操作的样子:
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不需要复制或移动的替代方法。
它是否已经存在于某处?如果没有,它将如何建造?