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

Find the length of string array with strlen()

本文关键字:数组 字符串 查找 strlen 使用      更新时间:2023-10-16

我一直在尝试找到具有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计数,直到它找到一个空终止字符。调用 std::string 的 c_str() 方法时,会获得一个指向以 null 结尾的字符串中第一个char的指针。

一个

C++方法是使用std::vector

vector<string> ss;
ss.push_back("a");
ss.push_back("b");
ss.push_back("c");
cout << ss.size(); // number of strings in your vector : 3

您还可以访问每个字符串:

cout << ss[0].size(); // 1

必须是这样的:

string s[]={"a","b","c"};  //array of string
for(auto i:s){
int len = strlen(i.c_str());  because you need to convert one string to c type string
cout<<len<<" ";
}

要获取数组长度:

std::array<int> nums {1, 3, 5, 7};
std::cout << "nums contains " << nums.size() << " elements.n";

http://en.cppreference.com/w/cpp/container/array/size

strlen()接受ctype字符串,c_str()string(STL(转换为strlen接受的ctype字符串(以Null结尾

(。

strlen的定义:size_t strlen ( const char * str (,注意输入参数的类型。你定义字符串 s[]={"a","b","c"};这是一个数组,因此以下语句将起作用:strlen(s[0].c_str(((;此外,为了计算数组 s 的长度,sizeof( s (/sizeof( s[ 0 ] ( 仅在 's' 的每个元素具有相同的长度时才起作用。