Status matching(SqStack &S,string &exp){int state=1;int i=0;SElemType e;while(i<strlen(exp)&&state)//這里出錯(cuò)。//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
2 回答

白板的微信
TA貢獻(xiàn)1883條經(jīng)驗(yàn) 獲得超3個(gè)贊
string 是C++里的字符串類型
strlen 是對(duì)C風(fēng)格字符串來使用的,也就是說 char [] 和string完全是不同類型的
strlen根本不認(rèn)識(shí) string 是什么,所以報(bào)錯(cuò)
while(i<exp.size()&&state);
這樣就行了,string類型自帶測(cè)試大小的函數(shù)。

森林海
TA貢獻(xiàn)2011條經(jīng)驗(yàn) 獲得超2個(gè)贊
char
b[]={'a'};
只會(huì)為b分配一個(gè)char的空間,后面的內(nèi)容是不可預(yù)知的,所以'\0'可能會(huì)出現(xiàn)在后面的任何一個(gè)位置,而strlen()函數(shù)又是以'\0'為標(biāo)志來統(tǒng)計(jì)的。所以這樣輸出的數(shù)字無法預(yù)知。
- 2 回答
- 0 關(guān)注
- 126 瀏覽
添加回答
舉報(bào)
0/150
提交
取消