gpt4 book ai didi

c++ - 如何使用strlen函数获取字符串的长度

转载 作者:IT老高 更新时间:2023-10-28 12:35:05 25 4
gpt4 key购买 nike

我有以下代码可以获取并打印一个字符串。

#include<iostream>
#include<conio.h>
#include<string>
using namespace std;

int main()
{
string str;
cout << "Enter a string: ";
getline(cin, str);
cout << str;
getch();
return 0;
}

但是如何使用 strlen() 函数计算这个字符串中的字符数呢?

最佳答案

对于 C++ 字符串,没有理由使用 strlen。只需使用 string::length:

std::cout << str.length() << std::endl;

您应该强烈更喜欢它而不是 strlen(str.c_str()),原因如下:

  1. Clarity:length()(或 size())成员函数明确给出返回字符串的长度。虽然可以弄清楚 strlen(str.c_str()) 做了什么,但它会迫使读者暂停一下。

  2. 效率:length()size() 运行时间 O(1) , 而 strlen(str.c_str()) 将花费 Θ(n) 时间来找到字符串的结尾。

  3. 风格:最好选择 C++ 版本的函数而不是 C 版本,除非有特定的理由这样做。这就是为什么通常认为使用 std::sort 优于 qsortstd::lower_bound 优于 bsearch ,除非有其他因素影响性能。

我能想到 strlen 有用的唯一原因是,如果您有一个嵌入空字符的 C++ 样式字符串,并且您想确定在第一个字符之前出现了多少个字符. (这是 strlenstring::length 不同的一种方式;前者在空终止符处停止,后者计算字符串中的所有字符)。但如果是这种情况,只需使用 string::find:

size_t index = str.find(0);
if (index == str::npos) index = str.length();
std::cout << index << std::endl;

希望这会有所帮助!

关于c++ - 如何使用strlen函数获取字符串的长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20180874/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com