我有以下代码获取并打印字符串.
#include<iostream>
#include<conio.h>
#include<string>
using namespace std;
int main()
{
string str;
cout << "Enter a string: ";
getline(cin, str);
cout << str;
getch();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但是如何使用strlen()函数计算此字符串中的字符数?
tem*_*def 99
对于C++字符串,没有理由使用strlen.只需使用string::length:
cout << str.length() << endl;
Run Code Online (Sandbox Code Playgroud)
您应该非常喜欢这个,strlen(str.c_str())原因如下:
清晰度:(length()或size())成员函数明确地给出字符串的长度.虽然可以弄清楚它的strlen(str.c_str())作用,但它会迫使读者暂停一下.
效率:length()并且size()在时间O(1)中运行,同时strlen(str.c_str())将花费Θ(n)时间来找到字符串的结尾.
风格:最好将C++版本的函数改为C版本,除非有特定的理由这样做.这就是为什么,例如,它通常被认为是更好地使用std::sort过qsort或std::lower_bound以上bsearch,除非一些其他的因素在起作用,将影响性能.
希望这可以帮助!
函数strlen显示之前的字符数,\0并将其用于std::string可能报告错误的长度。
strlen(str.c_str()); // It may return wrong length.
Run Code Online (Sandbox Code Playgroud)
在C ++中,字符串可以包含\0在字符中,但是C样式零终止字符串不能但必须位于末尾。如果std::string有\0,则最后一个字符之前strlen报告的长度小于实际的长度。
尝试使用.length()或.size(),我更喜欢第二个,因为另一个标准容器也有它。
str.size()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
262983 次 |
| 最近记录: |