【发布时间】:2020-12-14 11:23:57
【问题描述】:
如std::is_pointer和std::is_integral,如何实现std::is_cstring_pointer?
我想检查指针是不是c类型的字符串指针,可以吗?
如何实现这个目标?
【问题讨论】:
-
你尝试了什么?只需检查类型是否为
char[n]对于某些n -
需要考虑两件事:指针指向 char(s) 以及 char 数组是否以 0 结尾。据此:您想将什么视为 cstring_pointer ?
-
为什么你需要一个实用函数呢? std::is_integral 很有用,因为有不同的数据类型是整数类型。对于 cstrings,你要么有 const char*,有什么要检查的?
-
@Eric 你也可以有一个非常量的
char*,也可以有 volatile 限定的,尽管它们可能很少见。那是四种指向类型。并且指针本身可能是合格的,所以总共有 16 种类型。 -
一般来说,没有办法知道任意指针是否指向有效的以 nul 结尾的字符数组。
char ch; const char* ptr = &ch;.
标签: c++ c++11 typetraits