以前这是std::string::c_str()工作,但是从C ++ 11开始,data()它也提供了工作,为什么还要c_str()添加null终止字符std::string::data()?在我看来,这似乎是在浪费CPU周期,如果null终止字符根本不相关而仅data()使用,C ++ 03编译器就不必关心终止符,也不必每次调整字符串大小时,都必须向终止符写入0,但是由于data()-null-guarantee,C ++ 11编译器不得不浪费每次写入字符串大小时都要写入0的周期,因此,这可能会使代码变慢,我想他们有一定理由要添加该保证,那是什么?
我需要一个 std::stringsize字节,在构造它之后,我将在读取之前写入该字符串中的每个字节,因此空初始化字符串是浪费 cpu,这是有效的:
std::string s(size,0);
Run Code Online (Sandbox Code Playgroud)
但它只是有点浪费,它基本上就像calloc()在我需要的时候使用一样malloc(),所以问题是,我如何构造一个 X 未初始化字节的字符串?
(使用 Reserve()+push 不是一种选择,因为我将字符串提供给 C-api 以char*,size进行实际初始化)
编辑:此线程似乎与相同的问题/相关(但使用向量而不是字符串):C++11 中的值初始化对象和 std::vector 构造函数
PHP 至少从 PHP 4.3.0(可能更长)开始就有“ERA=131116”常量: https: //3v4l.org/XYZZ1
但是这是什么意思?它是干什么用的?get_defined_constants($categorize = true);将它放在“标准”类别下,这对我没有多大帮助,谷歌搜索似乎没有发现任何有用的东西,我能找到的唯一记录的常量看起来类似是IntlCalendar::FIELD_ERA,这是一个0(与131116相去甚远,我猜它不相关)
编码
<?php
$consts = get_defined_constants();
$consts = array_keys($consts);
usort($consts,function($a,$b){return (int)(strlen($a)<strlen($b));});
foreach($consts as $const){
echo strlen($const).": ".$const."\n";
}
Run Code Online (Sandbox Code Playgroud)
将在 PHP 8.0.0 之前按照我的预期从最长到最短打印所有定义的常量。7.3.13 开始于
62: SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_MEMLIMIT_INTERACTIVE
62: SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_OPSLIMIT_INTERACTIVE
60: SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_MEMLIMIT_SENSITIVE
60: SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_OPSLIMIT_SENSITIVE
51: SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_STRPREFIX
Run Code Online (Sandbox Code Playgroud)
但我不知道 PHP8.0.0 做了什么,它的输出开始于:
9: E_WARNING
21: FILTER_FLAG_STRIP_LOW
7: E_ERROR
26: FILTER_FLAG_STRIP_BACKTICK
Run Code Online (Sandbox Code Playgroud)
你可以在 3v4l 上看到它:https ://3v4l.org/MP2IF
那么在 PHP 8.0.0 中发生了什么来破坏这段代码呢?
从 mysql8 开始,这是合法的:
CREATE TABLE t (d DATETIME DEFAULT CURRENT_TIMESTAMP);
Run Code Online (Sandbox Code Playgroud)
这是合法的:
CREATE TABLE t (d DATE DEFAULT (CURRENT_DATE));
Run Code Online (Sandbox Code Playgroud)
那么为什么这是非法的呢?
CREATE TABLE t (d DATE DEFAULT CURRENT_DATE);
Run Code Online (Sandbox Code Playgroud)
导致
查询错误 (1064):第 1 行“CURRENT_DATE)”附近存在语法错误
当我跑步时
wget -q -O- 'https://cdn.sstatic.net/Sites/stackoverflow/company/img/logos/so/so-icon.png' | magick identify -verbose -
Run Code Online (Sandbox Code Playgroud)
我明白了
Image: /tmp/magick-25620GqQdCVSm3pGs
Base filename: -
Format: PNG (Portable Network Graphics)
Mime type: image/png
Class: DirectClass
Geometry: 158x158+0+0
Units: Undefined
Colorspace: sRGB
Type: PaletteAlpha
Base type: Undefined
Endianess: Undefined
Depth: 8-bit
Channel depth:
red: 8-bit
green: 8-bit
blue: 8-bit
alpha: 8-bit
Channel statistics:
Pixels: 24964
Red:
min: 0 (0)
max: 255 (1)
mean: 204.299 (0.801172)
standard deviation: 97.6901 (0.383099)
kurtosis: 0.551289
skewness: -1.57203
entropy: 0.667467
Green:
min: 0 (0)
max: …Run Code Online (Sandbox Code Playgroud) 假设我有
$flags=JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE;
Run Code Online (Sandbox Code Playgroud)
我怎样才能从中删除 JSON_UNESCAPED_SLASHES $flags?
尝试在 Windows 10 上的“Winsock Control”组件中进行编译时,出现此错误:
mswinsck.ocx 无法加载
值得注意的是,我已经安装了 VB6 SP6,并且使用 SP6,它在 Windows 8.1 和 Windows 7 上运行良好,但无法在 Windows 10 上编译。
同样值得注意的是,.exe从 Win7/8编译时编译的ws2_32.dll. 这只是编译步骤在Win10上不起作用。
运行 Dependency Walker,depends.exesuggestmswinsck.ocx无法加载,因为它依赖于API-MS-WIN-CORE-SYNCH-L1-2-0.DLL和API-MS-WIN-CORE-PROFILE-L1-1-0.DLL以及API-MS-WIN-CORE-PROCESSTHREADS-L1-1-0.DLL一堆具有相似名称的其他 DLL(我认为这些 DLL 与 SysWOW64 有关系),无法找到:
有谁知道如何在Win10上的VB6中的“Winsock Control”中进行编译?
(另外值得注意的是,似乎 MSFlexGrid 组件在 Win10 上以类似的方式无法编译,但这个问题是关于 WinSock 控件,而不是 MSFlexGrid)。
编辑:附加信息:我已经安装了“VB6 Service Pack 6”,VB 版本是“版本 9782 VBA 零售 6.0.9782”,并且mswinsck.ocx文件本身的版本是6.1.97.82(并且由于评论,我知道存在更新的版本:6.1.98.16)