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文件格式解析