when i compile the cpp file(cmdargs.cpp) int main(int argc, wchar_t* argv[])

V

Vinu

Hai
when i compile the cpp file(cmdargs.cpp) i attached the output below
the program

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

std::wcout<<L"Name of the Program is
"<<*argv[0]<<std::endl;
std::wcout<<L" Argument Count "<<argc-1<<std::endl;
for(int args=1;args<argc;args++)
{
std::wcout<<L"Argument "<<args<<" is "<<
*(argv[args])<<std::endl;
}
return 0;
}


output :
~~~~~~~~~~~~~~
Name of the Program is

-->

-->

-->

-->

#include<iostream>
#include <stdlib.h>
int main(int argc, wchar_t* argv[])
{
std::cout<<"Name of the Program is
"<<*argv[0]<<std::endl;
std::cout<<" Argument Count "<<argc-1<<std::endl;
for(int args=1;args<argc;args++)
{
std::cout<<"Argument "<<args<<" is "<<
*(argv[args])<<std::endl;
}
return 0;
}


cmdargs asd fgh jkl

output :
~~~~~~~~~~~~~~

Name of the Program is 1668113505
Argument Count 3
Argument 1 is 1634952192
Argument 2 is 1718052864
Argument 3 is 1785424896

-->

-->

-->

-->
here i got some nos but i want the strings how i can print the
values..plz help he
Thanks in advance
 
A

Andre Kostur

Hai
when i compile the cpp file(cmdargs.cpp) i attached the output below
the program

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

Bzzt. Non-standard main. You probably want:

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

make appropriate changes throughout your application to follow suit.
 
R

Rolf Magnus

Vinu said:
Hai
when i compile the cpp file(cmdargs.cpp) i attached the output below
the program

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

std::wcout<<L"Name of the Program is
"<<*argv[0]<<std::endl;
std::wcout<<L" Argument Count "<<argc-1<<std::endl;
for(int args=1;args<argc;args++)
{
std::wcout<<L"Argument "<<args<<" is "<<
*(argv[args])<<std::endl;
}
return 0;
}


output :
~~~~~~~~~~~~~~
Name of the Program is

-->

-->

-->

-->

#include<iostream>
#include <stdlib.h>
int main(int argc, wchar_t* argv[])

Does your implementation support that signature for main? Standard C++
guarantees only

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

.. Any other variants would be implementation-defined.
{
std::cout<<"Name of the Program is
"<<*argv[0]<<std::endl;

If you use wide characters, use a wide stream. And *argv[0] is a single
character.
std::cout<<" Argument Count "<<argc-1<<std::endl;
for(int args=1;args<argc;args++)
{
std::cout<<"Argument "<<args<<" is "<<
*(argv[args])<<std::endl;
}
return 0;
}


cmdargs asd fgh jkl

output :
~~~~~~~~~~~~~~

Name of the Program is 1668113505

When sending a wchar_t to a char based stream, it is printed as an integer,
not as a character.
 
V

Vinu

Hai Rolf Magnus

the real problem is when i try ti access it give Bus Error (Core Dump)
i don't no why? when i try to access the varible argv[1] or
argv[argc-1] anything it gives the Bus Error
Thanks
 
V

Vinu

don't consider it as main consider it as a function whic is passing int
and a wchar_t*
ok
 
R

Rolf Magnus

Vinu said:
Hai Rolf Magnus

the real problem is when i try ti access it give Bus Error (Core Dump)
i don't no why? when i try to access the varible argv[1] or
argv[argc-1] anything it gives the Bus Error

So I ask you again: Does your compiler documentation explicitly say that it
supports an argv of type wchar_t*[]?
 
V

Vinu

ya
compiler supports an argv of type wchar_t*[]

wchar_t internal representation is diff?
 
A

Andre Kostur

ya
compiler supports an argv of type wchar_t*[]

wchar_t internal representation is diff?

Have you checked your compiler's documentation on the acceptable forms of
main(), or are you assuming that since is compiles, it's supported? (What
is your compiler and platform?)
 
P

__PPS__

use int main(int argc, char * argv[]) and cout
even if you use wcout everything is still converted to chars before
printing. Try to verify this with wchar_t based ofstream and see if
your output file contains wide chars or not.
Wasn't you the one who asked about command arguments classes?
http://boost.org/doc/html/program_options.html is a really good
alternative. Use it, don't try to envent yours own
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,768
Messages
2,569,574
Members
45,050
Latest member
AngelS122

Latest Threads

Top