Beefy Boxes and Bandwidth Generously Provided by pair Networks
We don't bite newbies here... much
 
PerlMonks  

comment on

( [id://3333]=superdoc: print w/replies, xml ) Need Help??

Supposedly this is the same as using wmain, but works with mingw

# define UNICODE # define _UNICODE #include <windows.h> #include <stdio.h> #include <shellapi.h> int __cdecl main() { LPWSTR *szArglist; int nArgs; int i; int ix; int nLength; wprintf(L"commandline==\n%ws\n====\n\n\n", GetCommandLineW() ); szArglist = CommandLineToArgvW(GetCommandLineW(), &nArgs); if( NULL == szArglist ) { wprintf(L"CommandLineToArgvW failed\n"); return 0; } else { for( i=0; i<nArgs; i++) printf("%d: %ws\n", i, szArglist[i]); for( i=0; i<nArgs; i++) wprintf(L"\n\n%d: %s\n", i, szArglist[ +i]); //~ http://stackoverflow.com/questions/4014172/wprintf-format-type-spe +cification-ws# c++ - wprintf format type specification %ws - Stack Ov +erflow //~ http://msdn.microsoft.com/en-us/library/ms647550%28VS.85%29.aspx# + wsprintf function (Windows) for( i=0; i<nArgs; i++) { nLength = wcslen( szArglist[i] ); //~ printf("\n{%d: nLength %d}\n", i, nLength ); printf("\n$F[%d] = []; # nLength %d\n", i, nLength ); for( ix=0; ix < nLength; ix++ ){ //~ printf("%d: %d %#04X\n", i, ix, szArglist[i][ix] ) +; //~ printf("{%d: %d %#04X} ", i, ix, szArglist[i][ix] +); printf("$F[%d][%d]=%#04X; ", i, ix, szArglist[i][ix] ) +; if( 0 == (ix % 5) ) { printf("\n"); } } } } // Free memory allocated for CommandLineToArgvW arguments. LocalFree(szArglist); //~ sleep(20); printf("\n"); system("PAUSE"); return(1); }

And I do appear to get some kind of unicode :)

$F[1] = []; # nLength 39 $F[1][24]=0X6B; $F[1][25]=0X65; $F[1][26]=0X62; $F[1][27]=0X61; $F[1][28]=0X62; $F[1][29]=0X5C; $F[1][ +30]=0X107; $F[1][31]=0X65; $F[1][32]=0X76; $F[1][33]=0X61; $F[1][34]=0X70; $F[1][ +35]=0X2E; $F[1][36]=0X74; $F[1][37]=0X78; $F[1][38]=0X74; $F[2][24]=0X6B; $F[2][25]=0X65; $F[2][26]=0X62; $F[2][27]=0X61; $F[2][28]=0X62; $F[2][29]=0X5C; $F[2][ +30]=0X72; $F[2][31]=0X61; $F[2][32]=0X17E; $F[2][33]=0X6E; $F[2][34]=0X6A; $F[2] +[35]=0X69; $F[2][36]=0X107; $F[2][37]=0X2E; $F[2][38]=0X74; $F[2][39]=0X78; $F[2] +[40]=0X74; binmode STDOUT, ':encoding(UTF-8)'; fudge(\@F); use Data::Dump; dd\@F; sub fudge { my( $args ) = @_; for my $arg ( @$args ){ next unless defined $arg; my $one = ""; for my $char ( @$arg ){ next unless defined $char; my $chr = chr( $char ); print $chr; $one .= $chr; } print "\n"; dd $one; } } __END__ kebab\&#263;evap.txt "kebab\\\x{107}evap.txt" kebab\ražnji&#263;.txt "kebab\\ra\x{17E}nji\x{107}.txt"

Now all that is left is to figure out how to call system() in C


In reply to Re^6: How can I get a Unicode @ARGV? by Anonymous Monk
in thread How can I get a Unicode @ARGV? by exilepanda

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post; it's "PerlMonks-approved HTML":



  • Are you posting in the right place? Check out Where do I post X? to know for sure.
  • Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
    <code> <a> <b> <big> <blockquote> <br /> <dd> <dl> <dt> <em> <font> <h1> <h2> <h3> <h4> <h5> <h6> <hr /> <i> <li> <nbsp> <ol> <p> <small> <strike> <strong> <sub> <sup> <table> <td> <th> <tr> <tt> <u> <ul>
  • Snippets of code should be wrapped in <code> tags not <pre> tags. In fact, <pre> tags should generally be avoided. If they must be used, extreme care should be taken to ensure that their contents do not have long lines (<70 chars), in order to prevent horizontal scrolling (and possible janitor intervention).
  • Want more info? How to link or How to display code and escape characters are good places to start.
Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others wandering the Monastery: (4)
As of 2024-04-19 14:07 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found