我的程序是:

#include <cstdio>
#include <cstring>
using namespace std;

int main(int argc,char **argv)
{
    const static size_t maxbuf=128;
    const char * s1="String one";
    char sd1[maxbuf];
    printf("length is %ld",strnlen(sd1,maxbuf));
    return 0;
}

错误是:
 strnlen was not declared in this scope

问题:
  • 为什么我无法在我的代码块 IDE 上使用 C++ 中的 strnlen 函数?
  • 他们是 strnlen 的一个很好的替代品吗?
  • 最佳答案

    strnlen 是 GNU 扩展,也在 POSIX (IEEE Std 1003.1-2008) 中指定。如果 strnlen 不可用(在不支持此类扩展时可能会发生这种情况),请使用以下替换。

    // Use this if strnlen is missing.
    size_t strnlen(const char *str, size_t max)
    {
        const char *end = memchr (str, 0, max);
        return end ? (size_t)(end - str) : max;
    }
    

    我在一个类似的问题 here 上给出了答案。

    关于c++ - 在代码块 ide 上,C++ 是否支持 strnlen 函数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32676369/

    10-12 20:09