本人刚学习c++,在vc中编一个函数时遇到这样一个问题,请高手指点:
cannotconvertparameter1from'char*'to'unsignedint'Thisconversionrequiresareinterpret_c...
cannot convert parameter 1 from 'char *' to 'unsigned int'
This conversion requires a reinterpret_cast, a C-style cast or function-style cast
Error executing cl.exe.
程序如下:
string greet(string form,string lastname,string title,string::size_type pos,int length)
{
string::iterator beg,end;
beg=form.begin()+form.find("Daisy");
end=beg+5;
form.replace(beg,end,lastname);
beg=form.begin()+form.find("Ms");
end=beg+2;
form.replace(beg,end,title,pos,length);
要是用这种形式form.replace(beg,end,title.substr(pos,length));就不会有问题,就解释
return form;
} 展开
This conversion requires a reinterpret_cast, a C-style cast or function-style cast
Error executing cl.exe.
程序如下:
string greet(string form,string lastname,string title,string::size_type pos,int length)
{
string::iterator beg,end;
beg=form.begin()+form.find("Daisy");
end=beg+5;
form.replace(beg,end,lastname);
beg=form.begin()+form.find("Ms");
end=beg+2;
form.replace(beg,end,title,pos,length);
要是用这种形式form.replace(beg,end,title.substr(pos,length));就不会有问题,就解释
return form;
} 展开
展开全部
cannot convert parameter 1 from 'char *' to 'unsigned int'
'从这里判断调用的第一个参数出了问题,就是beg这个参数
form.replace(beg,end,lastname); '这里replace函数写了3个参数
form.replace(beg,end,title,pos,length); '这里replace函数写了5个参数
要是用这种形式form.replace(beg,end,title.substr(pos,length));就不会有问题,就解释 ‘(这里用了3个参数)
太久没有写C++了,不过判断的过程应该是类似的,你看看是否调用错了replace的另一种重构形式
'从这里判断调用的第一个参数出了问题,就是beg这个参数
form.replace(beg,end,lastname); '这里replace函数写了3个参数
form.replace(beg,end,title,pos,length); '这里replace函数写了5个参数
要是用这种形式form.replace(beg,end,title.substr(pos,length));就不会有问题,就解释 ‘(这里用了3个参数)
太久没有写C++了,不过判断的过程应该是类似的,你看看是否调用错了replace的另一种重构形式
更多追问追答
追问
就是调用了另一种重构形式,但我不明白form.replace(beg,end,title,pos,length); 这种形式为啥不对?我感觉是和form.replace(beg,end,title.substr(pos,length));的效果是一样的
追答
手上没有MSDN,你能把replace的五参数形式和三参数形式贴上来或者发给我看看么?从报错信息看是参数类型不一致,char *和unsigned int位数都不一样,肯定会报错
展开全部
cannot convert parameter 1 from 'char *' to 'unsigned int'
不能把第一个参数从char转换到无符号的整形,你看看是不是参数的类型有问题!
不能把第一个参数从char转换到无符号的整形,你看看是不是参数的类型有问题!
追问
好像不是
追答
是参数出错了~!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我也只是猜测:
参数数量不一样吧
form.replace(beg,end,title,pos,length);//()里面5个参数
form.replace(beg,end,title.substr(pos,length));//()里面是3个参数,title.substr(pos,length)表示
从一个字符串title复制一个从指定位置pos开始,并具有指定长度length的子字符串。
参数数量不一样吧
form.replace(beg,end,title,pos,length);//()里面5个参数
form.replace(beg,end,title.substr(pos,length));//()里面是3个参数,title.substr(pos,length)表示
从一个字符串title复制一个从指定位置pos开始,并具有指定长度length的子字符串。
追问
问题就在这,我感觉5个参数和3个参数的功能是一样的,replace操作包括这两种重构函数,但5个参数我不明白为啥运行不正确
追答
饿,刚看到你的追问,看到楼下你已经解决了~,表示现在用C++还没达到会使用重构等特殊函数,只是会用C的C++水平~我也要好好学习了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询