c++中字符串的Strlen

Strlen for strings in c++

本文关键字:Strlen 字符串 c++      更新时间:2023-10-16

我已经将c++转换为c类型字符串并使用strlen工作,但它不起作用。

 #include<bits/stdc++.h>
using namespace std;
int main(){
string s("Hello");
s.c_str();
cout<<strlen(s);
}
s.c_str();

这段代码实际上对s没有关于转换之类的副作用。您希望进一步处理结果。

代替

cout<<strlen(s);

你想要

cout<<strlen(s.c_str());

cout<<s.size();

其中后者肯定更有效,因为标准要求std::string::size()的时间复杂度为0(1),其中strlen()不能保证比O(strlen(s))有更好的时间复杂度。

如果你想浪费处理器的时钟周期:

 cout << strlen(s.c_str());

将计算s中直到第一个null字符为止的每个字符。

如果你只想知道字符串的长度:

 cout << s.length();

 cout << s.size();

将给你这个(并且使用O(1)算法而不是O(n)算法的strlen算法-这意味着一个百万字符长的字符串比单个字符串的长度要长100万倍)。[当然,如果你有一个std::string在中间包含一个空字符,你可能会发现其中一个方法是"正确的",另一个是"错误的",因为它要么给出了太长或太短的长度-一个C风格的字符串不允许在字符串中间包含一个空字符,它只允许作为一个终止]

string类做业务时,为什么要使用strlen ?

请阅读http://en.cppreference.com/w/cpp/string/basic_string,而不是大小/长度方法

否则做@πάνταῥεῖ表明