| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2454 人关注过本帖
标题:[求助]这个strcmp()函数哪错了
只看楼主 加入收藏
linlin
Rank: 1
等 级:新手上路
帖 子:134
专家分:0
注 册:2006-3-14
收藏
 问题点数:0 回复次数:18 
[求助]这个strcmp()函数哪错了

如下小程序:
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main()
{
vector<string> v;
string s;
char* p="!";
while(cin>>s)
{
v.push_back(s);
if(strcmp(s,p)==0)//编译时这句有错,error C2664: 'strcmp' : 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
Error executing cl.exe.
break;
}
return 0;
}

搜索更多相关主题的帖子: strcmp 函数 std char string 
2006-03-26 15:45
师妃暄
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:805
专家分:107
注 册:2006-3-1
收藏
得分:0 
你的P是指针啊~

有实力才会有魅力 实力来自坚持不懈的努力
2006-03-26 16:46
linlin
Rank: 1
等 级:新手上路
帖 子:134
专家分:0
注 册:2006-3-14
收藏
得分:0 
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main()
{
vector<string> v;
string s;
char* p="!";
while(cin>>s)
{
v.push_back(s);
if(strcmp(s,*p)==0)//改过来也是不行的,
break;
}
return 0;
}
或者这样都不可以的
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main()
{
vector<string> v;
string s;
while(cin>>s)
{
v.push_back(s);
if(strcmp(s,"!")==0)
break;
}
return 0;
}

woyaochengshuyidianle 我真的什么也不会
2006-03-26 16:54
linlin
Rank: 1
等 级:新手上路
帖 子:134
专家分:0
注 册:2006-3-14
收藏
得分:0 

上面两个都产生了这样的错误:
\新建文件夹\Cpp11.cpp(12) : error C2664: 'strcmp' : 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
Error executing cl.exe.

Cpp11.obj - 1 error(s), 0 warning(s)


woyaochengshuyidianle 我真的什么也不会
2006-03-26 16:55
师妃暄
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:805
专家分:107
注 册:2006-3-1
收藏
得分:0 
"!"

这哪是指针呢???

有实力才会有魅力 实力来自坚持不懈的努力
2006-03-26 16:57
linlin
Rank: 1
等 级:新手上路
帖 子:134
专家分:0
注 册:2006-3-14
收藏
得分:0 
To:师妃暄,你帮我调试一下这个程序,不用修改,只要告诉我哪个地方错了,就可以,谢谢你
#include <string>
#include <iostream>
using namespace std;
int main()
{
char*p1="as";
char s[9];
cin>>s;
char* p2=s;
while(strcmp(p1,p2)>0)
strcpy(p1,p2);
cout<<p1<<endl;
return 0;
}

woyaochengshuyidianle 我真的什么也不会
2006-03-26 17:20
名人
Rank: 1
等 级:新手上路
威 望:1
帖 子:205
专家分:0
注 册:2006-3-3
收藏
得分:0 
strcpy(p1,p2);// 这里错了
p1只是一个指向char类型的指针并没有给它分配一个空间,所以copy的时候就错了。你可以在copy前把p1分配一个空间例如:p1 = new char[10];

未必钱多乐便多,财多累己招烦恼。 清贫乐道真自在,无牵无挂乐逍遥。
2006-03-27 14:56
hrb2000ck
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2006-3-27
收藏
得分:0 

楼上正解,不过while循环体好象还少了对大括号
#include <string>
#include <iostream>
using namespace std;
int main()
{
char *p1="as";
char s[9];
cin>>s;
char *p2=s;
while(strcmp(p1,p2)>0)
{ p1=new char[10];
strcpy(p1,p2);
cout<<p1<<endl;}
return 0;
}
就完美了

2006-03-27 16:54
giant
Rank: 1
等 级:新手上路
帖 子:180
专家分:0
注 册:2005-12-11
收藏
得分:0 

名人,谢谢你
我知道错在那了,
还有个小问题:定义一个指针不是跟定义一个变量一样吗,也就是说定义指针或者变量时就分配到空间了吗?


2006-03-27 17:18
giant
Rank: 1
等 级:新手上路
帖 子:180
专家分:0
注 册:2005-12-11
收藏
得分:0 
giant
是我同学给我的号,也是他推荐我来这个论坛的,
我今天自己的linlin号上不了

2006-03-27 17:26
快速回复:[求助]这个strcmp()函数哪错了
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016952 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved