C++使用指针算法查找字符串长度

标签 c++ for-loop strlen

我现在正在上一门Comp Sci类(class),我的老师在黑板上写的一个例子如下——概念是创建一个字符串 length 函数,它使用指针算法返回具有字符串长度的 size_t。我理解这个概念,但每次我尝试这个例子时,我的结果都是 0

using namespace std;

size_t strlen(const char* str);

int main(int argc, char** argv) {

    char test[] = {'h','e','l','l','o','\0'};
    cout << strlen(test);

    return 0;
}

size_t strlen(const char* str){
    int idx = 0;
    for( ; *str; str++, idx++){
        return(idx);
    }
}

如果有人能提供有关问题所在的见解,我将不胜感激。

谢谢! :)

最佳答案

for( ; *str; str++, idx++){
    return(idx);
}

将在第一次迭代时返回 idx。你需要做的是让 for 循环运行,然后返回 idx。这看起来像:

for( ; *str; str++, idx++){}
return(idx);

您可以用 ; 结束 for 语句,但我发现这很容易被忽略。通过使用一个空的花括号 block ,表明您打算使用一个空的循环体

关于C++使用指针算法查找字符串长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32719668/

相关文章:

C++ 单词生成器问题

c++ - 使用 Vulkan 信号量等待 vkCmdCopyBuffer

c++ - dynamic_cast<> 是否仅限于沿继承层次结构的直接转换?

excel - 清除单元格内容

c++ - 如果存储字符串的 char 数组小于字符串,那么 C++ 真正存储字符串的位置是什么?

c++ - 为什么将 strlen 重新实现为循环+减法?

c - comp.lang.c 常见问题解答中有错误?计算可变格式字符串的长度

c++ - 推荐的 OpenGL/GLUT 引用

javascript - For 循环不使用 JavaScript 函数的参数

javascript - for循环中的关闭/回调