c++中字符串的Strlen
Strlen for strings in c++
我已经将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,而不是大小/长度方法
否则做@πάνταῥεῖ表明
相关文章:
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- c 字符串 c++ 中 strlen 的递归版本
- 当 NUL 字符被定义为字符串的一部分时,为什么 strlen() 不计算终止 NUL 字符的字节?
- strlen 是否针对字符串文字进行了优化?
- CPP - strlen 不会输出多个单词的整个长度 [仅限 C 字符串]
- 恒定字符阵列的获取字符串长度函数(strlen)不是恒定表达式
- char*newx=p+strlen(str1);这将如何执行,因为strstr将返回指向另一个字符串的第一个匹配字符的
- 错误:无法将const字符串转换为参数1的const char*为size_t strlen(const char*)
- 用 sizeof 替换 strlen 代替 C 字符串
- 带有 #include< iostream.h> 的程序允许使用 strlen() 等字符串函数。为什么?
- 在不使用 strlen() 的情况下计算字符串中的字母
- 如何使用strlen函数获取字符串的长度
- 字符串的向量、每个字符串的长度和c++中的strlen
- 使用 strlen 获取 winapi 中的字符串长度
- C 字符串的长度:std::strlen() vs. std::<char>char_traits::length()
- 创建我自己的strlen和子字符串函数
- 汇编中的字符串长度例程,以替代c++中的strlen
- 使用strlen剔除字符串中的指定单词
- c++中字符串的Strlen
- 使用 strlen() 查找字符串数组的长度