以下摘录自cppreference链接1和cppreference链接2:
enum codecvt_mode
{
consume_header = 4,
generate_header = 2,
little_endian = 1
};
template
<
class Elem,
unsigned long Maxcode = 0x10ffff,
std::codecvt_mode Mode = (std::codecvt_mode)0
>
class codecvt_utf8_utf16 : public std::codecvt<Elem, char, std::mbstate_t>;
Run Code Online (Sandbox Code Playgroud)
显然,0枚举类型的定义不明确codecvt_mode.C++标准可能会故意保留实现定义的默认值.
但是,我认为实现定义的默认值对用户来说可能是模糊的.
为什么C++ 11定义
std::codecvt_mode Mode = (std::codecvt_mode)0
而不是
std::codecvt_mode Mode = std::little_endian
?
int main()
{
int n[0];
}
Run Code Online (Sandbox Code Playgroud)
使用Clang 4.0,上面的代码是可以的.
但是,http://en.cppreference.com/w/cpp/language/array说:
数组的大小必须大于零.
根据C++ 17标准声明大小为0的数组是否合法?
Python3 urllib.parse.parse_qs奇怪地返回string, list<string>查询字符串的字典:
>>> import urllib.parse as p
>>> url = p.urlparse("http://exam.ple/path?query=string&yes=no")
ParseResult(scheme='http', netloc='exam.ple', path='/path', params='', query='query=string&yes=no', fragment='')
>>> p.parse_qs(url.query)
{'query': ['string'], 'yes': ['no']}
Run Code Online (Sandbox Code Playgroud)
该函数的文档说:
字典键是唯一的查询变量名称,而值是每个名称的值列表。
我可以以某种方式利用此“值列表”功能吗?
无论是维基百科,也不堆栈溢出,也不IETF规范有关“多”或字段的值“列表”提任何东西,我找不到任何这样的语法:
>>> p.parse_qs(p.urlparse("http://exam.ple/path?query=string&yes=no/a=0").query)
{'query': ['string'], 'yes': ['no/a=0']}
>>> p.parse_qs(p.urlparse("http://exam.ple/path?query=string@yes=no").query)
{'query': ['string@yes=no']}
>>> p.parse_qs(p.urlparse("http://exam.ple/path?query=string;yes=no").query)
{'query': ['string'], 'yes': ['no']}
>>> p.parse_qs(p.urlparse("http://exam.ple/path?query=string,yes=no").query)
{'query': ['string,yes=no']}
Run Code Online (Sandbox Code Playgroud)
似乎没有分隔符会导致键的值包含多个字符串。可能吗?
我想知道,对于以下情况,如果IEEE标准使用符合标准的任何cpu保证每种可能的情况(不包括NaN和无穷大):
(#表示所有操作:+ - */)
这是我的HTML代码.
<!DOCTYPE html>
<html>
<meta charset="UTF-8">
<head>
<title>Bar</title>
<script>
window.onload = function() {
console.log(document.body.innerHTML)
}
</script>
</head>
<body>
<http://www.example.com/foo/bar/baz.html>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我将此代码保存在一个名为的文件中bar.html,然后使用Firefox或Chrome打开该页面.这是我在控制台中看到的输出.
<http: www.example.com="" foo="" bar="" baz.html="">
</http:>
Run Code Online (Sandbox Code Playgroud)
现在我明白我的代码是不正确的,因为它有一个包含在<和中的URL >.
我想了解浏览器究竟是如何将其解析为一个http:标记,其中部分URL被解释为HTML属性.
HTML规范的某些部分是否会导致这种行为?如果是这样,你能引用HTML规范的这些部分吗?
是否符合以下W3C标准:
<div>
<h3>Heading</h3>
This is the text for this section.
</div>
Run Code Online (Sandbox Code Playgroud)
或者文本是否需要容器元素?
<div>
<h3>Heading</h3>
<p>This is the text for this section.</p>
</div>
Run Code Online (Sandbox Code Playgroud)
第一个例子不适合我,但内容编辑问我,我意识到我不知道它是否可以.
我经常看到关于省略号的教程,例如:
void foo(int i, ...){
int *p = &i;
++p;
//...
}
Run Code Online (Sandbox Code Playgroud)
而我只是想知道,这种方法在标准方面是否正确?我可以使用没有va_*宏的可变参数吗?也许某些实现以相反的顺序存储args,或类似的东西.
UPD: "使用"=可移植且可靠地传递args
这个问题和许多更多的是问,如果一个呼叫本网站上的许多问题中的memcpy()是与零值指定的长度\大小有效。回答时,每个人都引用当前的C标准(在本例中为C17 ISO / IEC9899:2017第283页),
如果声明为as的参数
size_tn指定函数数组的长度,则对该函数n的调用的值可以为零。除非在本节中对特定功能的描述中另有明确说明,否则此类调用上的指针参数仍应具有有效值,如7.1.4中所述。在这样的调用中,找不到字符的函数没有出现,比较两个字符序列的函数返回零,而复制字符的函数则复制零字符。
但是,这来自C标准,而C ++标准未引用。
在当前的C ++标准(即C ++ 17 ISO / IEC 14882)的何处列出了相同的定义?C和C ++具有两种不同的标准(和语言),据我所知,您不能引用一个标准并期望在另一个标准中存在相同的规则/行为。
如果C标准中的这种引用在C ++中有效而未在标准中明确说明,那么有人可以提供一个源来备份C和C ++之间的这种连接吗?
在C++标准库中,list是双向链表;forward_list是单链表,但仅支持后进先出。
然而,先进先出单链表因其比其他类似列表的容器(除了forward_list)低的空间开销而被广泛使用。所以我想知道:
为什么 C++ 不提供先进先出的单链表?
C++ 标准定义well-formed programs为
根据语法规则、可诊断语义规则和一定义规则构造的C++程序
我想知道是否所有格式良好的程序都能编译(如果不是这样,什么类型的错误会导致格式良好的程序和可编译问题之间存在差异)。例如,包含歧义错误的程序会被认为是格式良好的吗?
standards ×10
c++ ×6
html ×2
arrays ×1
c ×1
c++11 ×1
c++17 ×1
c++20 ×1
containers ×1
html5 ×1
ieee ×1
memcpy ×1
operations ×1
python ×1
query-string ×1
stl ×1
url ×1
urllib ×1
w3c ×1
well-formed ×1