C++ 获取 const char* 字符串长度

C++ 获取 const char* 字符串长度

获取字符串长度的方法有哪些。

strlen

strlen.c
源码如下

size_t
strlen(const char *str)
{const char *s;for (s = str; *s; ++s);return (s - str);
}

举个例子

1 2 3 4 5 6
a v b d f \0

初始化语句:s = str(只在循环开始时执行一次)
条件判断:*s(如果*s不为\0,为true
循环体:空语句;
迭代语句:++s(每次循环体执行完后执行,指针后移)
最后计算出字符串长度为5;

模板

#define HA "HA"

HA宏变量的值为字符串常量的引用,为const char(&)[3] .
所以写出如下模板函数

template <size_t N>
size_t getCharLength(const char(&arr)[N]) {std::cout << "字符串内容: " << arr << ", 字符串长度: " << N << std::endl;return N;
}

案例

#include "learn001.hpp"
#include <type_traits>template <size_t N>
size_t getCharLength(const char(&arr)[N]) {std::cout << "字符串内容: " << arr << ", 字符串长度: " << N << std::endl;return N;
}int main() {std::cout << getCharLength("Hello World!") << "\n"; const char (&str1)[6] = "Hello";const char (&str2)[6] = "Hello";const char str3[6] = "Hello";const char* str4 = new char[6]{'H','e','l','l','o','\0'};std::cout << sizeof(str1) << ", p: " << &str1 << "\n";std::cout << sizeof(str2) << ", p: " << &str2 << "\n";std::cout << sizeof(str3) << ", p: " << &str3 << "\n";std::cout << sizeof(str4) << ", p: " << reinterpret_cast<const void*>(str4) << "\n";printf("p: %p\n", str4);return 0;
}

TODO elf文件格式解析