使用std::string时调用length()或size()获取字符数,二者等价;处理C风格字符串需用strlen()函数计算有效字符长度,不包含末尾'\0';注意sizeof返回数组总字节数,可能包含'\0',与字符串内容长度不同。

在C++中获取字符串长度的方法取决于你使用的字符串类型。常见的有C风格字符串(char数组)和C++标准库中的std::string。以下是几种常用的获取字符串长度的方式。
使用 std::string 的 length() 或 size() 方法
如果你使用的是std::string,可以直接调用length()或size()成员函数,这两个函数功能相同,都返回字符串中字符的数量。
- length():返回字符串的字符数,不包括结尾的空字符
-
size():与
length()等价,为了与其他STL容器保持接口一致而存在
示例代码:
#include <iostream>
#include <string>
<p>int main() {
std::string str = "Hello C++";
std::cout << "长度: " << str.length() << std::endl; // 输出 9
std::cout << "大小: " << str.size() << std::endl; // 输出 9
return 0;
}
使用 strlen() 处理C风格字符串
对于以空字符'\0'结尾的字符数组(即C风格字符串),可以使用<cstring>头文件中的strlen()函数来获取长度。
立即学习“C++免费学习笔记(深入)”;
注意:strlen()不会计算末尾的'<p>注意:<code>strlen()不会计算末尾的'\0',只返回有效字符个数。
示例代码:
#include <iostream>
#include <cstring>
<p>int main() {
const char* cstr = "Hello C";
std::cout << "C字符串长度: " << strlen(cstr) << std::endl; // 输出 7
return 0;
}
处理字符数组时注意区分 sizeof 和 strlen
当你有一个字符数组而不是指针时,sizeof可能会返回整个数组占用的字节数,而不是字符串内容长度。
例如:
char arr[] = "Hello"; std::cout << sizeof(arr) << std::endl; // 输出 6(包括 '\0') std::cout << strlen(arr) << std::endl; // 输出 5
因此,在判断字符串内容长度时,应优先使用strlen(对C字符串)或std::string::length()。
基本上就这些。根据你使用的字符串类型选择对应方法即可。用std::string时调用length()最直观,处理C字符串记得包含<cstring>并使用strlen()。不复杂但容易忽略细节。











