gpt4 book ai didi

c++ - 如何识别代码中const char*和const char[]的类型?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:26:09 25 4
gpt4 key购买 nike

const char* s1   = "teststirg";  
const char s2[] = "teststirg";

我想要一个方法告诉我s1是“char*”而s2是“char[]”,怎么写这个方法?

最佳答案

使用模板:

template<typename T, unsigned int SIZE>
bool IsArray (T (&a)[SIZE]) { return true; }

template<typename T>
bool IsArray (T *p) { return false; }

这将在运行时进行评估。
用法:

if(IsArray(s1))
...

if(IsArray(s2))
...

如果有兴趣,您可以使用一些高级技术,它会告诉您这是编译时间。

编辑:

typedef char (&yes)[2];

template<typename T, unsigned int SIZE>
yes IsArray (T (&a)[SIZE]);

template<typename T>
char IsArray (T *p);

用法:

if(sizeof(IsArray(s1)) == sizeof(yes))
...
if(sizeof(IsArray(s2)) == sizeof(yes))
...

关于c++ - 如何识别代码中const char*和const char[]的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9679909/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com