# Introduction :

In this tutorial, we will learn how to count the total digits in a number in C++. The program will ask the user to enter the number. It will count the digits and print it out. We will learn different ways to solve this problem.

## Method 1: Using a loop :

If we divide one integer by *10*, it’s rightmost digit is removed. e.g. *122/10* is *12*. We can keep dividing the number until it becomes *0*. For example, we can divide *1234* four times until it becomes *0*. Using a loop, the program will keep dividing the number by *10* and one variable will keep the count.

The final C++ program is :

```
#include <iostream>
using namespace std;
int main()
{
//1
int number;
int total = 0;
//2
cout << "Enter a number : " << endl; cin >> number;
//3
while (number != 0)
{
total++;
number = number / 10;
}
//4
cout << "Total digits in the number : " << total << endl;
return 0;
}
```

### Explanation :

*The commented numbers in the above program denote the step numbers below :*

- Create two integer variables. One to store the user-provided number and the other to store the total digit count.
- Ask the user to enter a number. Read and store it in a variable
*number*. - Run one
*while*loop. This loop will run until the value of*number*becomes*0*. On each iteration of the loop, increment the value of*total*by*1*and change the value of*number*to*number/10*. - Finally, once the loop is completed, print the total digits count i.e. the value of
*total*.

### Sample output :

```
Enter a number :
12567
Total digits in the number : 5
```

## Recursive method :

We can also calculate the total count recursively. In a recursive approach, the same method is called again and again.

```
#include <iostream>
using namespace std;
int findTotalCount(int number)
{
if (number == 0)
{
return 0;
}
return 1 + findTotalCount(number / 10);
}
int main()
{
int number;
cout << "Enter a number : " << endl; cin >> number;
cout << "Total digits in the number : " << findTotalCount(number) << endl;
return 0;
}
```

Here, we are calling the *findTotalCount* method recursively. It takes one parameter *number*. If the value of *number* is *0*, it returns *0*. Else, it calls the same method and increases the current count by *1*.

It will produce the same output as the previous example.

## By converting to a string :

This is a quick and easy method. C++ string comes with one inbuilt method to find the length. Also, we can convert an integer to a string using the *to*string_ method provides in *string* header. That’s it. Just convert the number to a string and find out the length of that string :

```
#include <iostream>
#include <string>
using namespace std;
int main()
{
int number;
cout << "Enter a number : " << endl; cin >> number;
cout << "Total digits in the number : " << to_string(number).size()<< endl;
return 0;
}
```

It will print the same output.

## Using log :

Another quick way to find out the total digits. We can find out the round of *log10* value of the number and add *1* to it to find out the count :

```
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int number;
cout << "Enter a number : " << endl; cin >> number;
cout << "Total digits in the number : " << 1 + floor(log10(number)) << endl;
return 0;
}
```