gpt4 book ai didi

c++ - 使用 strlen() 查找字符串数组的长度

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:19:50 27 4
gpt4 key购买 nike

我一直试图找到 string 的长度,它有一个 char 数组,带有 strlen() 函数,但它不是在职的。我使用的代码是这样的:

string s[]={"a","b","c"};
int len = strlen(s.c_str());

它会产生以下错误:

"request for member âc_strâ in âwArrayâ, which is of non-class type"

但是当我像这样在 string 上使用这个 strlen() 函数时,它工作正常:

fin.open("input.txt");
string tempStr;
getline(fin, tempStr,'\n');
int len = strlen(tempStr.c_str());

我在这里缺少什么?我知道我可以用

找到 string s[] 的长度
int size = sizeof( s ) / sizeof( s[ 0 ] );

但是为什么我不能使用strlen()。谁能解释一下这是怎么回事?

最佳答案

使用辅助函数模板很容易找到任何类型的固定大小数组的长度:

#include <cstddef> // for std::size_t

template< class T, size_t N >
std::size_t length(const T (&)[N] )
{
return N;
};

string s[]={"a","b","c"};
std::cout << length(s) << std::endl;

在 C++11 中,该函数将是 constexpr

关于strlen ,它会计算 chars 直到找到空终止符 \0。当您调用 std::stringc_str() 方法中,您将获得指向空终止字符串中第一个 char 的指针。

关于c++ - 使用 strlen() 查找字符串数组的长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14919254/

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