Home     |     .Net Programming    |     cSharp Home    |     Sql Server Home    |     Javascript / Client Side Development     |     Ajax Programming

Ruby on Rails Development     |     Perl Programming     |     C Programming Language     |     C++ Programming     |     IT Jobs

Python Programming Language     |     Laptop Suggestions?    |     TCL Scripting     |     Fortran Programming     |     Scheme Programming Language


 
 
Cervo Technologies
The Right Source to Outsource

MS Dynamics CRM 3.0

C++ Programming

Determine size of argv[x]


I need a way to determine how many characters are in a command line
argument.  Basically the code snippet looks like
int main(int argc, char *argv[])
{
        openfiles(argv[1], argv[2], &infile, &outfile);
        cipher(&infile, &outfile, argv[3]);
        return 0;

}

void cipher(fstream *infile, fstream *outfile, char key[])
{
        plain text in
        bring in the key
        cipher text out

}

Right now the entire program works, because I have it set up to only
accept 8 character keys.  I'd like to set it up so that it can determine
at runtime how many characters the key is.  Since the key is accepted at
the command line I can't figure out how it's done since sizeof(argv[3])
will always return the sizeof a pointer to a char (4) and
sizeof(*argv[3]) seems to always return the size of a single char (1).

try strlen(argv[3]).

Perfect thanks

Rolf Magnus wrote:
> try strlen(argv[3]).

  Another possibility, which is especially worth considering if you
are not comfortable with handling C-style strings (which are just
char pointers) is to create a vector of std::strings from the
command-line parameters. These will be safer and much easier to
handle than the "raw" argv array.

  It's very easy to create a vector of strings in C++ (surprisingly
easy for those who have never thought of it before):

int main(int argc, char* argv[])
{
    std::vector<std::string> params(argv, argv+argc);
    ...

}

  Now you can index 'params' for the command-line parameters
('params.size()' will tell you how many there are), and each element
will be an std::string, which is easier and safer to handle than the
char*'s. So, for example, if you want to know the size of the fourth
parameter: params[3].size()
Add to del.icio.us | Digg this | Stumble it | Powered by Megasolutions Inc