我想要对一个字符串进行长度的测量,我新建了一个函数,但是使用strlen时候报错了
代码片段在
int test(string s){
cout<<strlen(s);
int number=0;
for(int i = 0;i<17;i++){
number += (s[i]-'0')*quanzhong[i];
}
number%=11;
//cout<<number;
return number;
}
int main()
{
string s = "";
getline(cin,s);
int ans = test(s);
if(match[ans] == s[17]-'0')
cout<<"正确";
}
string用length
cout<<s.length()
strlen是计算char */char[]的,string非要用,需要用 c_str()转换成char *
cout << strlen(s.c_str());
strlen只能用来求得c类型的字符串的长度,string类型的长度有string专有的成员函数length()得到字符串长度
如果实在想用strlen来测量string的长度,可以用如下方法:
string s = "hello world";
cout<<strlen(&*s.begin())<<endl; // 取s的第一个字符的地址给strlen
cout<<strlen(s.c_str())<<endl; //将string类型的s转换为c类型的字符串,再使用strlen
别嫌弃我没有声望,毕竟我刚登录,有无穷的希望,谁能知道我到底怎样呢?
我们来看一下函数原型:
C:
extern unsigned int strlen(char *s);
C++/VC++
size_t strlen(const char *string);
其中,size_t是:
typedef unsigned int size_t;
所以,stringlen()只能求字符数组或字符指针(不还是字符数组吗?)的长度。
以下代码合法:
char *a;
char b[100];
scanf("%s %s", a, b);
printf("%d %d",strlen(a), strlen(b));
而C++独有的string类型可以这样求长度:
string a;
cin >> a;
cout << a.size() << endl;
cout << a.length() << endl;
cout << strlen( a.c_str() ) << endl;
有问题,找百度:C++为什么strlen函数不能测量虚参string的长度