首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在C++中strrchr返回nullptr而不是NULL吗?

在C++中strrchr返回nullptr而不是NULL吗?
EN

Stack Overflow用户
提问于 2018-02-21 07:39:02
回答 1查看 342关注 0票数 2

我正在将程序从C移植到C++,包括以下代码:

代码语言:javascript
复制
char* get_file_extension(const char* file_name)
{
    char* e = strrchr((char*) file_name, '.');
    if (e == NULL)
    {
        char* buf = strdup(file_name);
        return buf;
    }
    return e + 1;
}

假设我只将编译器更改为c++11,那么在本例中只将更改为nullptr就足够了吗?当前strrchr来自包含的标头.h,因此我担心如果strrchr返回NULL而不是nullptr,以及如果(e == nullptr)检查失败。

还是应该将cstring.h更改为cstring

EN

回答 1

Stack Overflow用户

发布于 2018-02-21 07:44:23

strrchr返回NULL是一条不准确的语句。NULL是一个宏,它扩展为空指针常量。空指针常量可以隐式转换为任何指针类型的空指针。strrchr返回的是一个空指针常量,它被转换为char*空指针。

nullptr也是一个空指针常量,具有一些特殊的属性。但其中大部分对我们来说都是无关紧要的。当您将其与任何类型的空指针进行比较时,如果该指针是空指针,则该比较将得到真。

事实上,即使是nullptr == NULL也是非常好的,并且会给你一个正常的结果。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48900438

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档