C++字符串比较 strcmp

#include<iostream>#include<cstring>usingnamespacestd;intmain(){stringword="jia";strin... #include <iostream>
#include <cstring>
using namespace std;
int main()
{
string word="jia";
string word1="jie";
cout<<strcmp(word,word1);
}
为什么cout<<strcmp(word,word1);这行编译不能通过呢?
展开
 我来答
乌浦泽65
高粉答主

2018-12-10 · 每个回答都超有意思的
知道答主
回答量:33
采纳率:0%
帮助的人:5805
展开全部

strcmp 是用来比较两个C字符串(即char数组),参数类型都是char*,所以不能直接拿string作为参数。

可以用<cstring>,但写成cout<<strcmp(word.c_str(), word1.c_str()); string类型的c_str()函数会将string中的字符串转为const char*

扩展资料:

例题:编写一个程序,它使用char数组和循环来每次从键盘读取一个单词,直到用户输入done为止。随后该程序指出用户输入了多少个单词。

#include <iostream>

#include<cstring>

int main(){

using namespace std;

const int size = 20;

char ch[size] ;

int i = 0;

cout<<"Enter words(to stop with word done)"<<endl;

cin>>ch;

while (strcmp(ch,"done"))

/*字符串之间的比较, 相同返回0. 左<右,返回负数。cmp是compare的缩写*/

{

i++;

cin>>ch;}

cout<<"You entered a total of "<<i<<" words."<<endl;

}

下面是用string类完成上述例题的代码

#include<iostream>

#include<string>

using namespace std;

int main(){

string str;

int i = 0;

cout<<"Enter words (to stop,with word done)"<<endl;

cin>>str;

while(str != "done")//注意和上面的区别

{

cin>>str;

i++;

}

cout<<"You entered a total of "<<i<<" words."<<endl;

return 0;

}

dongyue2008
2011-07-12 · TA获得超过3604个赞
知道大有可为答主
回答量:1300
采纳率:100%
帮助的人:603万
展开全部
strcmp 是用来比较两个C字符串(即char数组),参数类型都是char*,你拿两个string类型的变量作为参数,当然出错啦。比较两个string类型变量是否相等,不需要用strcmp,直接用==就可以了。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
memberwin
2011-07-12 · TA获得超过3903个赞
知道大有可为答主
回答量:1000
采纳率:100%
帮助的人:516万
展开全部
如果没有记错 <cstring>里定义的strcmp的参数是char*
所以不能直接拿string作为参数
可以直接include <string>, string里面也定义了strcmp,而且是以string为参数的
或者使用<cstring>,但写成cout<<strcmp(word.c_str(), word1.c_str()); string类型的c_str()函数会将string中的字符串转为const char*
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
金色潜鸟
2018-05-31 · TA获得超过3.2万个赞
知道大有可为答主
回答量:1.3万
采纳率:89%
帮助的人:5754万
展开全部
用 strncmp()比较。 string 变 char 用 s1.c_str():
#include <iostream>
using namespace std;
#include <cstring>
int main()
{
string s1="12:00:00", s2="12:00:10";
int ret;
if (strncmp(s1.c_str(),s2.c_str(),5)==0) ret=1; else ret=0;
cout << "ret=" << ret << endl;

return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
erjiclanguage
2011-07-12 · TA获得超过302个赞
知道答主
回答量:87
采纳率:0%
帮助的人:21.8万
展开全部
你#include<cstring>中的有错,是#include<string>,里面没有c。
我希望你能改为下面的比较好:
#include<iostream.h>

#include<string.h>
试试看行不行!

希望能帮助你!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式