使用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#include 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风格字符串),可以使用头文件中的strlen()函数来获取长度。
立即学习“C++免费学习笔记(深入)”;
注意: 注意:strlen()不会计算末尾的',只返回有效字符个数。strlen()不会计算末尾的'\0',只返回有效字符个数。
示例代码:
#include#include 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字符串记得包含并使用strlen()。不复杂但容易忽略细节。











