c++ isalpha

#include<iostream>#include<vector>#include<string>usingnamespacestd;intmain(){intcoun... #include<iostream>
#include<vector>
#include <string>
using namespace std;
int main()
{
int count=0;
string str;
vector<string> ivec;
while(cin>>str)
ivec.push_back(str);
vector<string>::iterator iter=ivec.begin();
while(iter!=ivec.end()&&count!=1)
{if(isalpha(*iter))
{*iter=toupper(*iter);++iter;}
else {++iter;++count;};
};
return 0;
}

error C2664: “isalpha”: 不能将参数 1 从“std::basic_string<_Elem,_Traits,_Ax>”转换为“int”

error C2664: “toupper”: 不能将参数 1 从“std::basic_string<_Elem,_Traits,_Ax>”转换为“int”
展开
 我来答
CNnumen911
推荐于2016-07-24 · TA获得超过1133个赞
知道小有建树答主
回答量:401
采纳率:100%
帮助的人:677万
展开全部
/*函数isalpha()和toupper()的参数都要求是int类型的, 而你传的确是string类型的, 所以无法编译通过, 可以将string类型转成int类型, 使用
atoi(string.c_str())这种方法, 可以看下下面的改动, 编译通过了...*/

#include<iostream>
#include<vector>
#include <string>
using namespace std;
int main()
{
int count=0;
string str;
vector<string> ivec;
while(cin>>str)
ivec.push_back(str);
vector<string>::iterator iter=ivec.begin();
while(iter!=ivec.end()&&count!=1)
{if(isalpha(atoi((*iter).c_str()))) //这里改动
{*iter=toupper(atoi((*iter).c_str()));++iter;} //这里改动
else {++iter;++count;};
};
return 0;
}
她是我的小太阳
高粉答主

推荐于2016-06-02 · 醉心答题,欢迎关注
知道顶级答主
回答量:5.1万
采纳率:83%
帮助的人:9042万
展开全部
//因为汉字的后半部分可能不小于0同时还可能满足if(isalpha( p[i])),就会混乱
把循环改成这样,numcha也不用float了

while(p[i]!='\0')
{
if(p[i]<0)
{ numcha++;i+=2;continue;}
if(isalpha( p[i]))
numlet+=1;
i++;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
muyejingefeng
2010-03-14 · TA获得超过348个赞
知道小有建树答主
回答量:287
采纳率:0%
帮助的人:0
展开全部
*iter是String类型,不是整数类型。。
isalpha()与toupper()要求的参数均为int型。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式