C++ 不带循环和内置函数的字符串长度

C++ 不带循环和内置函数的字符串长度,c++,c,string,C++,C,String,如果不使用strlen()之类的循环和字符串类函数,我如何计算字符串的长度?ifs if (str[0] == 0) return 0; if (str[1] == 0) return 1; ///keep going until fingers start bleeding 理论上,任何迭代函数都可以递归实现,反之亦然。\include #include <stdio.h> void main() { char string[50]; int i, leng

如果不使用strlen()之类的循环和字符串类函数,我如何计算字符串的长度?

ifs

if (str[0] == 0) return 0;
if (str[1] == 0) return 1;
///keep going until fingers start bleeding
理论上,任何迭代函数都可以递归实现,反之亦然。

\include
#include <stdio.h>

void main()

{
    char string[50];

    int i, length = 0;

    printf("Enter a string \n");
    gets(string);

    for (i = 0; string[i] != '\0'; i++)
    {
        length++;
    }
    printf("The length of a string is the number of characters in it \n");
    printf("So, the length of %s = %d\n", string, length);
}
void main() { 字符串[50]; int i,长度=0; printf(“输入字符串”); 获取(字符串); 对于(i=0;字符串[i]!='\0';i++) { 长度++; } printf(“字符串的长度是其中的字符数\n”); printf(“因此,%s的长度=%d\n”,字符串,长度); }
试着猜猜看,然后。:)顺便说一句,你是指字符数组还是std::string?如果你不想在
C
C++
中使用循环:),你可以使用递归?下定决心
int getLength(const char*str){return 4;}
我想最简单的方法是让别人用内置的
操作符[]
函数为你编码。它真的不值得投票,但这让我笑得很厉害:D+1@ahenderson确保生成器没有循环。这只是一个概念证明——难道不能用一些模板魔法来修改它,使其真正适用于无限长度的字符串吗?@paul23不,它不能适用于无限长度的任何东西,如果你所说的工作指的是“至少完成编译”但是循环只是一个跳转,调用只是一个JMP,程序地址被推到堆栈上…@Aslai:a循环是一个循环,函数调用是一个函数调用。否则一切都是0和1是的,我想那是真的。我最担心的是,如果字符串长度大于
RAM/BitWidth
,这可能会导致致命的后果。如果计算机在32位系统上只有1GB的RAM,而你有一个214748365个字符长的字符串…@Aslai:没错,但它仍然胜过Luchian的方法:)我在问题中提到了“无循环”。发帖前请阅读完整问题。
#include <stdio.h>

void main()

{
    char string[50];

    int i, length = 0;

    printf("Enter a string \n");
    gets(string);

    for (i = 0; string[i] != '\0'; i++)
    {
        length++;
    }
    printf("The length of a string is the number of characters in it \n");
    printf("So, the length of %s = %d\n", string, length);
}