ArtsAutosBooksBusinessEducationEntertainmentFamilyFashionFoodGamesGenderHealthHolidaysHomeHubPagesPersonal FinancePetsPoliticsReligionSportsTechnologyTravel

Using Command Line Arguments in C++

Updated on July 30, 2014
alikhan3 profile image

The Author is a proud Nustian where he studies Electrical Engg. at Pakistan Navy Engineering College, Karachi.

All C++ Programs can be given arguments through command line and can also be exected using the same command line interface. To do so there is a standard format and procedure explained below, afterwords we will consider some examples of programs using command line arguments (filing and a simple function).

Standard Command Line Arguments argv and argc

int main ( int argc, char *argv[] )
{
    //checking number of arguments entered by user in cmd
	if ( argc!= 3 )
	{
        //show what should be arguments
		cout << "Usage: Name FirstArgument SecondArgument and so on" << endl;
		exit(-1);
	}

Line 1: These two arguments in the function main, "argv" and "argc", they are the standard arguments. Every program seeking to get arguments from command line must follow this format.

  • argv is an array of pointers of type char. You can pass any number of string arguments through argv (refer to the images and example below to see how arguments are actually given and used).
  • argc is an integer argument which holds the number of strings that were passed subsequently through argv. For example if two strings were entered through argv, argc will have the value of 2.

Line 4: Before proceeding with the execution the program must check whether the correct number of string arguments have been entered or not. Here the value 3 indicates that the program requires at least three arguments to carry out its function, this may change depending on your program.

Line 7: Tells the user what arguments should be entered.

How to Execute a C++ or C# Program thorough Command Line

In order to check your program you must know how to execute it from Command Line.

  1. Find the exe file your program and rename it to a short name preferably just one letter for instance take 'h.exe'.
  2. Move it out of the folders and paste it in drive C or any you prefer (by this I mean the exe file should not be in any folder) this will make it easier to access.
  3. Go to Run, open cmd.exe (command line) type "cd/" to move out of the documents and settings directory.
  4. Navigate to the partition in which you have placed your exe file.
  5. Type its name and press enter to execute it. The process is illustrated below:

Executing a C++ Program from Command Line.
Executing a C++ Program from Command Line.

Examples of Programs Using Command Line Arguments

Filling with Command Line Arguments

This is a simple filing program which reads characters from one file and then copies them into another file. The Name of the file from which to copy characters and the name of the file to which the characters are copied is being taken through command line argument.

  • Note how the arguments are written in cmd separated with a space and extensions are also written with their names (See the image below).
  • Both the exe file of the program, the file from which to copy characters and the second file to which the characters are being copied must be in the same directory.

#include <iostream>
#include <fstream>
#include <string>
using namespace std;

//first argument in cmd would always be .exe file name of this program,
//2nd will be the file to be read
//3rd will be file in which program will copy numbers

int main ( int argc, char *argv[] )
{
    cout<<"*Program Execution Begins!*"<<endl;
	if ( argc!= 3 )//checking number of arguments entered by user in cmd
	{
        //show what should be arguments
		cout << "Usage: copyFile infile_name outfile_name" << endl;
		exit(-1);
	}
	
	ifstream infile( argv[1], ios::in );//opening first file in read mode
	
	if (!infile)//if file to copied could not be opened
	{
		cout <<"file: \""<<argv[1]<<"\" could not be opened\n";
		exit(-1);
	}
	
	ofstream copynum( argv[2], ios::out );//2nd file in write mode
	
	char ch;
	
	
	while ( !infile.eof() )
	{
        //read char from file 1
        ch=infile.get();
		copynum<<ch;
	}
	cout <<"Data Copied\n";
	cout<<"Enjoy OOP!"<<endl;
	
	system("pause");
}
Argv is an array of pointers to strings.
Argv is an array of pointers to strings.

using the arguments of Argv

Line 13: Because the program requires 3 arguments to carry out its function argc should have a value of 3.

Line 20 and 28: Arguments are used using the array notation in the usual way, In Line 20 argv[1] points to the second argument, (argv[0] was the name of exe file) and in Line 28 argv[2] points to the third argument typed (see image below for how the arguments are typed in cmd).

Filing Through Command Line
Filing Through Command Line

Comments

    0 of 8192 characters used
    Post Comment

    • Mel Carriere profile image

      Mel Carriere 2 years ago from San Diego California

      By no means am I a programmer but I like to dabble in it a little. C++ certainly is a versatile programming language. Great hub!

    • alikhan3 profile image
      Author

      StormsHalted 2 years ago from Karachi, Pakistan

      Thanks for stopping by.....

    Click to Rate This Article