tags:

views:

162

answers:

9

Possible Duplicate:
Pass arguments into C program from command line.

mypro parameter

When run like above,how to get the parameter in mypro's main() :

#include <iostream>

int main()
{
   char* str = "default_parameter";
   if(parameter_exists())str = parameter;
   ...
}

How to implement the pseudo code above?

+10  A: 

Just need to add (int argc, char *argv[]) to your main function. argc holds the number of arguments, and argv the arguments themselves.

int main(int argc, char *argv[])
{
    std::string str = "default";
    if (argc > 1) { str = argv[1]; }
}

Note that the command is also included as an argument (e.g. the executable). Therefore the first argument is actually argv[1].

Inverse
Please specify that you should add (int argc, char **argv) as main arguments.
Patrick
`string ` is the same as `char *` ?
@user198729: `string` is a C++ string, which you should probably be using if you're supposed to be writing C++ code. `char *` is a C string, which you should probably not use in C++ unless you have a very good reason.
Paul R
+3  A: 

Your function should use the second of these two allowed C++ main function signatures:

int main(void)

int main(int argc, char *argv[])

In this, argc is the argument count and argv is an argument vector.

For more details, see this Wikipedia article.

Daniel Daranas
+2  A: 

Well you need a main function that accepts arguments, like so:

int main(int argc, char *argv[])
{

}

You would then check the number of arguments passed in using argc. Usually there is always one, the name of the executable but I think this is OS dependent and could thus vary.

Skurmedel
+1  A: 

main has two parameters, int argc and char** argv which you can use to access to the command line parameters.

argc is the number of parameters including the name of the executable, argv points to the parameter list itself (so that argv[0] is "mypro" in your example).

Just declare main like int main (int argc, char** argv){..}

Francesco
+2  A: 

You need to change the main to be:

int main(int argc, char** argv){

argc is the number of paramaters, argv is an array containing all of the paramaters (with index 0 being the name of the program). Your first parameter will be located at index 1 of argv.

Jake Greene
+2  A: 
#include <iostream>


using namespace std;

int main(int argc, char* argv[]) {
   for(int i = 1; i < argc; i++)
      cout << atoi(argv[i]) << endl;
   return 0;
} 

Here argc gives the count of the arguments passed and argv[i] gives ith command line parameters.

where argv[0]='name of the program itself'

anijhaw
+1  A: 

You need to use this declaration of main:

int main(int argc, _TCHAR* argv[])
{
    if (argc > 1)
    {
        str = argv[1];
    }
}

argv[0] is the name of the executable, so the parameters start at argv[1]

ChrisF
+1  A: 

When expecting command-line arguments, main() accepts two arguments: argc for the number of arguments and argv for the actual argument values. Note that argv[0] will always be the name of the program.

Consider a program invoked as follows: ./prog hello world:

argc    = 3
argv[0] = ./prog
argv[1] = hello
argv[2] = world

Below is a small program that mirrors the pseudocode:

#include <iostream>
#include <string>

int main(int argc, char **argv) {
    std::string arg = "default";
    if (argc >= 2) {
        default = argv[1]
    }
    return 0;
}
Mike Koval
+1  A: 

On Windows, use the following signature instead to get Unicode arguments:

int wmain(int argc, wchar_t** argv)
Philipp