c++ - C++ char类findCharIndex

标签 c++ class character c-strings

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;
 }

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

例:

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

请告诉我为什么,因为它应该是7?

最佳答案

您的return -1;语句在错误的位置。

它被附加到循环内elseif上,因此当this->operator[](i) == c评估为false时将达到该值。实际上,如果第一个char是匹配项,则调用return i;,否则调用return -1;。您将完全忽略第二个及后续char
return -1;语句需要移动到循环下方,以便仅在扫描整个字符串而未找到任何匹配项时才到达该语句

int String::findCharIndex(const char &c) const {
    for (int i = 0; i < this->getLength(); ++i) {
        if (this->operator[](i) == c) {
            return i;
        }
    }
    return -1; // <-- moved here
}

关于c++ - C++ char类findCharIndex,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62187490/

相关文章:

c++ - 如何镜像 CGPoint

Python多重继承,如果两个基类都持有相同的方法,则调用第二个基类方法

c++ - 检查字符串是否包含非字母数字字符

C++ 从父类(super class)调用子类方法

r - ddply/transform 不会将函数应用于字符向量的每个元素

.net - 为什么 .NET 区分字符串和字符?

c++ - 在 QTCreator .pro 文件中使用 QMAKE 链接标志顺序

c++ - 声明从抽象类继承的继承抽象方法是否有任何性能问题?

c++ - 从函数返回后删除动态数组

Java 通过最终数组定义类成员