Create stopwatch with C++
Published: 2024-01-06 12:00:33


#
cpp
#
beginners
#
tutorial
#
showdev
C++ is a great language but to make something using it is a bit difficult. But that doesn't mean you can't do anything with it. You can create small console based applications and that's what we are going to do. I will show you how to create a simple stopwatch with C++.

I got this idea from my javascript stopwatch project and thought how can I create something like that in C++. So let's see how to do it !!

Requirements
C++ compiler (or you can use any online platform. My recommendation is: Repl.it)
Text editor
Some knowledge of C++
Step 1: Write the base code
We will start by writing the base code for our console application.

Create a folder and give it a name. e.g. cpp-stopwatch
Create a file named stopwatch.cpp in that folder.
// stopwatch.cpp
#include <iostream>

using namespace std;

int main() {
   cout << "stopwatch" << endl;
}
To compile and run this code, open your terminal or command prompt and navigate to that folder and run the following commands
# compile
g++ stopwatch.cpp -o stopwatch

# run 
./stopwatch
Use these commands every time you make changes to your C++ file.

Step 2: Displaying our stopwatch
First we will start by displaying our stopwatch in console before adding functionality to it. For that we will create necessary variables and a function named displayTime to display our stopwatch.
// stopwatch.cpp
#include <iostream>

using namespace std;

void displayTime(int hours, int minutes, int seconds) {
   cout << hours << ":"
        << minutes << ":"
        << seconds << endl;
}

int main() {
   int hour = 0;
   int min = 0;
   int sec = 0;

   displayTime(hour, min, sec);

}
Step 3: Stopwatch functionality !!
Now the interesting part, functioning of stopwatch. If you are familiar with javascript, you already know that there is a built-in function setInterval that runs the code after the specified interval. But how can we do that thing in C++ ??

In C++ we can use a function called sleep which is available in the header unistd.h in linux and windows.h in windows.

Sleep function takes number of seconds and stops the code for the specified duration.
#include <iostream>
#include <unistd.h> // in linux: sleep()

// #include <windows.h> // in windows: Sleep()

using namespace std;

int main() {
   cout << "wait for 5 seconds !" << endl;
   sleep(5);
   cout << "5 seconds passed away !" << endl;
}
So, we have a way to stop our code but we need a way to increment number of seconds continuously. For that we will use LOOOOOP.
#include <iostream>
#include <unistd.h> // in linux: sleep()

// #include <windows.h> // in windows: Sleep()


using namespace std;

int main() {
   int hour = 0;
   int min = 0;
   int sec = 0;

   // run the stopwatch continuously
   while(true) {
      sleep(1);
      sec++;

      cout << sec << endl;
   }  
}
Let's add the code for hours and minutes as well and also use our display function
#include <iostream>
#include <unistd.h> // in linux: sleep()

// #include <windows.h> // in windows: Sleep()


using namespace std;


void displayTime(int hours, int minutes, int seconds) {
   cout << hours << ":"
        << minutes << ":"
        << seconds << endl;
}

int main() {
  int hour = 0;
  int min = 0;
  int sec = 0;

  while(true) {
    sleep(1);

    sec++;

    if(sec > 59) {
      min++;
      sec = 0;
    } 

    if(min > 59) {
      hour++;
      sec = 0;
      min = 0;
    }

    displayTime(hour, min, sec);
  }
}
Running this code will start printing stopwatch with new time, line by line. We can handle this by simple clearing screen before displaying the next time.

Add system("clear") in displayTime function
We will also display initial time before entering the loop so that stopwatch display time from 0 hours, 0 minutes and 0 seconds instead of directly showing 1 second in console
#include <iostream>
#include <unistd.h> // in linux: sleep()

// #include <windows.h> // in windows: Sleep()


using namespace std;

void displayTime(int hours, int minutes, int seconds) {
   // for linux
   system("clear"); 

   // for windows
   // system("cls");

   cout << hours << ":"
        << minutes << ":"
        << seconds << endl;
}

int main() {
  int hour = 0;
  int min = 0;
  int sec = 0;

  displayTime(hour, min, sec);

  while(true) {
    sleep(1);

    sec++;

    if(sec > 59) {
      min++;
      sec = 0;
    } 

    if(min > 59) {
      hour++;
      sec = 0;
      min = 0;
    }

    displayTime(hour, min, sec);
  }
}
Finally, compile and run it and hopefully you will see your very own console stopwatch. To stop the stopwatch, use Ctrl + C

This one was beginner friendly and doesn't use threads and chrono library. You can find the source code and working example in my repl.

I am not an expert in C++ but trying new things and applying them is important. Hope you learned something new out of this simple C++ stopwatch project.