使用 strlen() 查找字符串数组的长度
Find the length of string array with strlen()
我一直在尝试找到具有strlen()
函数的 char
s 数组的 string
的长度,但它不起作用。我使用的代码是这样的:
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
s 上使用这个 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
计数,直到它找到一个空终止字符