这里出错while(i<strlen(exp)&&state),为什么?

Status matching(SqStack &S,string &exp)
{
int state=1;
int i=0;
SElemType e;
while(i<strlen(exp)&&state)//这里出错。
//
cannot convert parameter 1 from 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >' to 'const char *'
No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called

慕姐8265434
浏览 88回答 2
2回答

白板的微信

string 是C++里的字符串类型strlen 是对C风格字符串来使用的,也就是说 char [] 和string完全是不同类型的strlen根本不认识 string 是什么,所以报错while(i<exp.size()&&state);这样就行了,string类型自带测试大小的函数。

森林海

charb[]={'a'};只会为b分配一个char的空间,后面的内容是不可预知的,所以'\0'可能会出现在后面的任何一个位置,而strlen()函数又是以'\0'为标志来统计的。所以这样输出的数字无法预知。
打开App,查看更多内容
随时随地看视频慕课网APP