I have following code that gets and prints a 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;
}
But how to count the number of characters in this string using strlen()
function?
Use std::string::size
or std::string::length
(both are the same).
As you insist to use strlen
, you can:
int size = strlen( str.c_str() );
note the usage of std::string::c_str
, which returns const char*
.
BUT strlen
counts untill it hit \0
char and std::string
can store such chars. In other words, strlen
could sometimes lie for the size.
Function strlen
shows the number of character before \0
and using it for std::string
may report wrong length.
strlen(str.c_str()); // It may return wrong length.
In C++, a string can contain \0
within the characters but C-style-zero-terminated strings can not but at the end. If the std::string
has a \0
before the last character then strlen
reports a length less than the actual length.
Try to use .length()
or .size()
, I prefer second one since another standard containers have it.
str.size()
Manually:
int strlen(string s)
{
int len = 0;
while (s[len])
len++;
return len;
}
If you really, really want to use strlen(), then
cout << strlen(str.c_str()) << endl;
else the use of .length() is more in keeping with C++.
Simply use
int len=str.length();
#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;
}
This is the program if you want to use strlen . Hope this helps!
Source: Stackoverflow.com