This is going to be a mini project in c++
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")
indisplayTime
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.
Top comments (5)
that impressive
Thank you !
impressive
That's Awesome ! 🤘
Thank youuu !!