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包含usesize()
,我认为历史上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;
}