Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/143.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;char类findCharIndex int String::findCharIndex(const char&c)const { 对于(inti=0;igetLength();i++) { 如果(此->运算符[](i)==c) { 返回i; 打破 } 其他的 返回-1; }_C++_Class_Character_C Strings - Fatal编程技术网

C++ C++;char类findCharIndex int String::findCharIndex(const char&c)const { 对于(inti=0;igetLength();i++) { 如果(此->运算符[](i)==c) { 返回i; 打破 } 其他的 返回-1; }

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;语句需要移动到循环下面,这样只有

我一直在使用这个函数,它返回c字符串中字符c的索引。这个函数可以很好地处理字符,但是如果c是一个数字,结果仍然是-1

例如:

“我有两只狗”中“2”的第一个索引是-1

请告诉我为什么,因为它假设为7?

您的
返回-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
。请注意如何使用
{}
大括号!