C++ 如何使用strlen函数获取字符串的长度

C++ 如何使用strlen函数获取字符串的长度,c++,string,C++,String,下面的代码获取并打印字符串 #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; }

下面的代码获取并打印字符串

#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;
}
#包括
#包括
#包括
使用名称空间std;
int main()
{
字符串str;

对于C++字符串,CUT< P>没有理由使用<代码> StrLon < /C> >只使用<代码> String::长度< /C> >:

std::cout << str.length() << std::endl;
希望这有帮助!

函数显示
\0
之前的字符数,并将其用于
std::string
可能会报告错误的长度

strlen(str.c_str()); // It may return wrong length.
在C++中,字符串可以包含字符内的<代码> 0代码>代码,但是C样式零结尾的字符串只能在结尾。如果<代码>:ST::String < /C> >在最后一个字符之前,<代码> > 0代码> >代码> StrLin 报告长度小于实际长度。

尝试使用或,我更喜欢第二个,因为另一个标准容器有它

str.size()

使用
std::string::size
std::string::length
(两者相同)

当您坚持使用strlen时,您可以:

int size = strlen( str.c_str() );
注意
std::string::c_str
的用法,它返回
const char*


但是
strlen
会一直计数直到它命中
\0
字符,
std::string
可以存储这样的字符。换句话说,
strlen
有时可能会影响大小。

如果你真的真的想使用strlen(),那么

cout手动:

int strlen(string s)
{
    int len = 0;

    while (s[len])
        len++;

    return len;
}
#包括
#包括
#包括
使用名称空间std;
int main()
{
char-str[80];
int i;
不能简单地使用

int len=str.length()


str.size()
main
必须返回
int
。为什么
strlen
准确?所以我们不能使用strlen()计算字符串中的字符数函数?标题?作者?它显然是由不太懂该语言的人编写的,它可能包含更严重的错误。我想提醒大家远离它。
。size
也是正确的。我实际上使用它而不是
length
。为什么要使用两个函数size()和length()在C++中有什么特殊的原因?因为两个都在做同样的工作。@ AkasHAMARA你可以在这里检查:你的代码是正确的,但是我已经读到C++的所有函数都是C++输入的,我们可以在C中使用StrLon,如何在C++中使用。,但这将是非常糟糕的风格。虽然C++吸收C的标准库,但是C++标准库通常包含更多的C++友好版本的函数,并且在使用“<代码>字符串::长度< /代码>时,没有理由使用<代码> StrLin < /C>。如果我想使用<代码> STRLY()
那么为什么我不能使用
strlen(str);
@AkashSharma-
strlen
接受
const char*
,并且
std::string
不是
const char*
。也就是说-在这里使用
strlen
真的不是一个好主意!@AkashSharma-我相信这是历史性的。STL包含use
size()
,我认为历史上
string
使用
length()
。这可能是为了向后兼容。:返回一个指向以null结尾的字符数组的指针,该数组的数据与字符串中存储的数据相同。@Johan:不一定。std::string
可以包含嵌入的空字符。如果您有一个
std::string
foo
值为
“foo\0bar”
,它是
。length()
是7,但是
strlen(foo.c_str())
将返回3。我的错误,我以另一种方式阅读了您的邮件(结尾没有“\0”)。很抱歉,我删除了我以前的评论,因为它变得毫无意义。您是认真的还是讽刺的?:)
cout << strlen(str.c_str()) << endl;
int strlen(string s)
{
    int len = 0;

    while (s[len])
        len++;

    return len;
}
#include<iostream>
#include<conio.h>
#include<string.h>
using namespace std;
int main()

{
    char str[80];

    int i;

    cout<<"\n enter string:";

    cin.getline(str,80);

    int n=strlen(str);

    cout<<"\n lenght is:"<<n;

    getch();

    return 0;

}