C++ C++;char类findCharIndex int String::findCharIndex(const char&c)const { 对于(inti=0;igetLength();i++) { 如果(此->运算符[](i)==c) { 返回i; 打破 } 其他的 返回-1; }
我一直在使用这个函数,它返回c字符串中字符c的索引。这个函数可以很好地处理字符,但是如果c是一个数字,结果仍然是-1 例如: “我有两只狗”中“2”的第一个索引是-1 请告诉我为什么,因为它假设为7?您的C++ C++;char类findCharIndex int String::findCharIndex(const char&c)const { 对于(inti=0;igetLength();i++) { 如果(此->运算符[](i)==c) { 返回i; 打破 } 其他的 返回-1; },c++,class,character,c-strings,C++,Class,Character,C Strings,我一直在使用这个函数,它返回c字符串中字符c的索引。这个函数可以很好地处理字符,但是如果c是一个数字,结果仍然是-1 例如: “我有两只狗”中“2”的第一个索引是-1 请告诉我为什么,因为它假设为7?您的返回-1;语句位于错误的位置。 它附加到循环内部的if的else,因此当this->operator[](i)时将到达它==c的计算结果为false。实际上,如果第一个字符匹配,则调用返回i;,否则调用返回-1;。您将完全忽略第二个和后续的字符 return-1;语句需要移动到循环下面,这样只有
返回-1;
语句位于错误的位置。
它附加到循环内部的if
的else
,因此当this->operator[](i)时将到达它==c
的计算结果为false。实际上,如果第一个字符
匹配,则调用返回i;
,否则调用返回-1;
。您将完全忽略第二个和后续的字符
return-1;
语句需要移动到循环下面,这样只有在扫描整个字符串而没有找到任何匹配项时才能到达它,例如
int String::findCharIndex(const char &c) const
{
for (int i =0; i < this->getLength();i++)
{
if ( this->operator[](i) == c)
{
return i;
break;
}
else
return -1;
}
int String::findCharIndex(const char&c)const{
对于(int i=0;igetLength();++i){
如果(此->运算符[](i)==c){
返回i;
}
}
return-1;//您的return-1;
语句位于错误的位置。
它附加到循环内部的if
的else
,因此当this->operator[](i)时将到达它==c
的计算结果为false。实际上,如果第一个字符
匹配,则调用返回i;
,否则调用返回-1;
。您将完全忽略第二个和后续的字符
return-1;
语句需要移动到循环下面,这样只有在扫描整个字符串而没有找到任何匹配项时才能到达它,例如
int String::findCharIndex(const char &c) const
{
for (int i =0; i < this->getLength();i++)
{
if ( this->operator[](i) == c)
{
return i;
break;
}
else
return -1;
}
int String::findCharIndex(const char&c)const{
对于(int i=0;igetLength();++i){
如果(此->运算符[](i)==c){
返回i;
}
}
return-1;//当您说“'2'的第一个索引”时,您是指'2'
的第一个索引还是2
的第一个索引?A会让这一点变得明确。@chris我指的是'2'在字符串“I have 2 dogs”中的位置。因此结果应该是7,而不是-1。显示的代码不会编译,因为它缺少了}
要关闭for
循环,当你说“2”的第一个索引时,你是指'2'
的第一个索引还是2
的第一个索引?A将使这一点变得明确。@chris我指的是字符串“我有2条狗”中“2”的位置。因此结果应该是7,而不是-1。显示的代码将不会编译,因为它缺少一个}
关闭
loop@HoangMy否,因为1)由于返回i;
在其正上方,并且2)当此->运算符[](i)时,从未到达中断==c
计算为false,然后输入else
,而不是if
和您的else
调用return-1
。请注意如何使用{}
大括号!@HoangMy no,因为1)由于返回i;
在它的正上方,所以永远无法到达中断
,2)当此->运算符[](i)时==c
计算为false,然后输入else
,而不是if
和您的else
调用返回-1
。请注意如何使用{}
大括号!