Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. General Programming
  3. C / C++ / MFC
  4. How to convert PWSTR to char * ?

How to convert PWSTR to char * ?

Scheduled Pinned Locked Moved C / C++ / MFC
tutorialquestion
15 Posts 5 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • A Offline
    A Offline
    adara
    wrote on last edited by
    #1

    How to convert PWSTR to char * ? thanx:rose:

    T 1 Reply Last reply
    0
    • A adara

      How to convert PWSTR to char * ? thanx:rose:

      T Offline
      T Offline
      Tom Archer
      wrote on last edited by
      #2

      Here's an example of doing that:

      char szBuffer[255];
      WideCharToMultiByte(CP_ACP,
      0,
      /* your PWSTR var goes here */,
      -1,
      szBuffer,
      sizeof(szBuffer),
      NULL,
      NULL);

      Cheers, Tom Archer Author, Inside C# Author, Visual C++.NET Bible A total abstainer is one who abstains from everything but abstention, and especially from inactivity in the af

      N L 2 Replies Last reply
      0
      • T Tom Archer

        Here's an example of doing that:

        char szBuffer[255];
        WideCharToMultiByte(CP_ACP,
        0,
        /* your PWSTR var goes here */,
        -1,
        szBuffer,
        sizeof(szBuffer),
        NULL,
        NULL);

        Cheers, Tom Archer Author, Inside C# Author, Visual C++.NET Bible A total abstainer is one who abstains from everything but abstention, and especially from inactivity in the af

        N Offline
        N Offline
        Nish Nishant
        wrote on last edited by
        #3

        Hi Tom I am not at all experienced with ATL, but I was wondering why we cannot use W2A macro to achieve what the guy wanted to do! Nish


        The posting stats are now in PDF:- http://www.busterboy.org/codeproject/ Feel free to make your comments. Updated - May 04th, Saturday

        T T 2 Replies Last reply
        0
        • T Tom Archer

          Here's an example of doing that:

          char szBuffer[255];
          WideCharToMultiByte(CP_ACP,
          0,
          /* your PWSTR var goes here */,
          -1,
          szBuffer,
          sizeof(szBuffer),
          NULL,
          NULL);

          Cheers, Tom Archer Author, Inside C# Author, Visual C++.NET Bible A total abstainer is one who abstains from everything but abstention, and especially from inactivity in the af

          L Offline
          L Offline
          l a u r e n
          wrote on last edited by
          #4

          hey tom can you not just use: USES_CONVERSION; *pChar = W2A(*pWideChar); ????


          situations to avoid #37:
          "good morning ... how many sugars do you take in your coffee ... and what was your name again?"

          coming soon: situations to avoid #38: "...and the dog was there too?"

          N T 2 Replies Last reply
          0
          • L l a u r e n

            hey tom can you not just use: USES_CONVERSION; *pChar = W2A(*pWideChar); ????


            situations to avoid #37:
            "good morning ... how many sugars do you take in your coffee ... and what was your name again?"

            coming soon: situations to avoid #38: "...and the dog was there too?"

            N Offline
            N Offline
            Nish Nishant
            wrote on last edited by
            #5

            Lauren, I asked Tom this very question just now. I was about 30 seconds later than you were though :-) Nish


            The posting stats are now in PDF:- http://www.busterboy.org/codeproject/ Feel free to make your comments. Updated - May 04th, Saturday

            L 1 Reply Last reply
            0
            • N Nish Nishant

              Lauren, I asked Tom this very question just now. I was about 30 seconds later than you were though :-) Nish


              The posting stats are now in PDF:- http://www.busterboy.org/codeproject/ Feel free to make your comments. Updated - May 04th, Saturday

              L Offline
              L Offline
              l a u r e n
              wrote on last edited by
              #6

              hehe great minds nish great minds :)


              situations to avoid #37:
              "good morning ... how many sugars do you take in your coffee ... and what was your name again?"

              coming soon: situations to avoid #38: "...and the dog was there too?"

              A N 2 Replies Last reply
              0
              • L l a u r e n

                hehe great minds nish great minds :)


                situations to avoid #37:
                "good morning ... how many sugars do you take in your coffee ... and what was your name again?"

                coming soon: situations to avoid #38: "...and the dog was there too?"

                A Offline
                A Offline
                adara
                wrote on last edited by
                #7

                :rose:

                1 Reply Last reply
                0
                • L l a u r e n

                  hey tom can you not just use: USES_CONVERSION; *pChar = W2A(*pWideChar); ????


                  situations to avoid #37:
                  "good morning ... how many sugars do you take in your coffee ... and what was your name again?"

                  coming soon: situations to avoid #38: "...and the dog was there too?"

                  T Offline
                  T Offline
                  Tom Archer
                  wrote on last edited by
                  #8

                  Yep. Does the same thing and definitely much less typing and remembering of parameter values. Great catch! By the way, check out what these macros expand to :omg:

                  Original C++ code

                  void SayHello2(PWSTR wstrName)
                  {
                  USES_CONVERSION;
                  AfxMessageBox(W2A(wstrName));
                  }

                  Expanded macros

                  void SayHello2(PWSTR wstrName)
                  {
                  int _convert = 0;
                  _convert;
                  UINT _acp = ATL::_AtlGetConversionACP() ;
                  _acp;
                  LPCWSTR _lpw = 0;
                  _lpw;
                  LPCSTR _lpa = 0;
                  _lpa;

                  AfxMessageBox((((_lpw = wstrName) == 0) ? 0
                  : (_convert = (lstrlenW(_lpw)+1)*2,
                  AtlW2AHelper((LPSTR) _alloca(_convert),
                  _lpw,
                  _convert,
                  _acp))));
                  }

                  Cheers, Tom Archer Author, Inside C# Author, Visual C++.NET Bible A total abstainer is one who abstains from everything but abstention, and especially from inactivity in the af

                  N 1 Reply Last reply
                  0
                  • L l a u r e n

                    hehe great minds nish great minds :)


                    situations to avoid #37:
                    "good morning ... how many sugars do you take in your coffee ... and what was your name again?"

                    coming soon: situations to avoid #38: "...and the dog was there too?"

                    N Offline
                    N Offline
                    Nish Nishant
                    wrote on last edited by
                    #9

                    lauren wrote: great minds nish great minds Yeah :-) I guess so :-) Nish


                    The posting stats are now in PDF:- http://www.busterboy.org/codeproject/ Feel free to make your comments. Updated - May 04th, Saturday

                    1 Reply Last reply
                    0
                    • N Nish Nishant

                      Hi Tom I am not at all experienced with ATL, but I was wondering why we cannot use W2A macro to achieve what the guy wanted to do! Nish


                      The posting stats are now in PDF:- http://www.busterboy.org/codeproject/ Feel free to make your comments. Updated - May 04th, Saturday

                      T Offline
                      T Offline
                      Tom Archer
                      wrote on last edited by
                      #10

                      Like a lot of things in Windows development, there's more than one way to accomplish this task. I'm just more accustomed to using the Win32 functions. As I told Lauren, using the ATL macros is certainly a lot less typing and remembering of parameters and therefore, probably the better way to accomplish this conversion task. Cheers, Tom Archer Author, Inside C# Author, Visual C++.NET Bible A total abstainer is one who abstains from everything but abstention, and especially from inactivity in the af

                      N 1 Reply Last reply
                      0
                      • T Tom Archer

                        Yep. Does the same thing and definitely much less typing and remembering of parameter values. Great catch! By the way, check out what these macros expand to :omg:

                        Original C++ code

                        void SayHello2(PWSTR wstrName)
                        {
                        USES_CONVERSION;
                        AfxMessageBox(W2A(wstrName));
                        }

                        Expanded macros

                        void SayHello2(PWSTR wstrName)
                        {
                        int _convert = 0;
                        _convert;
                        UINT _acp = ATL::_AtlGetConversionACP() ;
                        _acp;
                        LPCWSTR _lpw = 0;
                        _lpw;
                        LPCSTR _lpa = 0;
                        _lpa;

                        AfxMessageBox((((_lpw = wstrName) == 0) ? 0
                        : (_convert = (lstrlenW(_lpw)+1)*2,
                        AtlW2AHelper((LPSTR) _alloca(_convert),
                        _lpw,
                        _convert,
                        _acp))));
                        }

                        Cheers, Tom Archer Author, Inside C# Author, Visual C++.NET Bible A total abstainer is one who abstains from everything but abstention, and especially from inactivity in the af

                        N Offline
                        N Offline
                        Nish Nishant
                        wrote on last edited by
                        #11

                        Ouch, that expanded code hurts my eyes :-) Nish


                        The posting stats are now in PDF:- http://www.busterboy.org/codeproject/ Feel free to make your comments. Updated - May 04th, Saturday

                        1 Reply Last reply
                        0
                        • T Tom Archer

                          Like a lot of things in Windows development, there's more than one way to accomplish this task. I'm just more accustomed to using the Win32 functions. As I told Lauren, using the ATL macros is certainly a lot less typing and remembering of parameters and therefore, probably the better way to accomplish this conversion task. Cheers, Tom Archer Author, Inside C# Author, Visual C++.NET Bible A total abstainer is one who abstains from everything but abstention, and especially from inactivity in the af

                          N Offline
                          N Offline
                          Nish Nishant
                          wrote on last edited by
                          #12

                          Tom Archer wrote: Like a lot of things in Windows development, there's more than one way to accomplish this task. I'm just more accustomed to using the Win32 functions. As I told Lauren, using the ATL macros is certainly a lot less typing and remembering of parameters and therefore, probably the better way to accomplish this conversion task. I think it's cool to know multiple ways to do something. It can be quite handy at times. Nish p.s. Got my mail? [with ppt]


                          The posting stats are now in PDF:- http://www.busterboy.org/codeproject/ Feel free to make your comments. Updated - May 04th, Saturday

                          T 1 Reply Last reply
                          0
                          • N Nish Nishant

                            Tom Archer wrote: Like a lot of things in Windows development, there's more than one way to accomplish this task. I'm just more accustomed to using the Win32 functions. As I told Lauren, using the ATL macros is certainly a lot less typing and remembering of parameters and therefore, probably the better way to accomplish this conversion task. I think it's cool to know multiple ways to do something. It can be quite handy at times. Nish p.s. Got my mail? [with ppt]


                            The posting stats are now in PDF:- http://www.busterboy.org/codeproject/ Feel free to make your comments. Updated - May 04th, Saturday

                            T Offline
                            T Offline
                            Tom Archer
                            wrote on last edited by
                            #13

                            Especially something like this where the person may need to use the Win32 SDK. Regarding the PPT. Yes, thank you. I replied to you. Cheers, Tom Archer Author, Inside C# Author, Visual C++.NET Bible A total abstainer is one who abstains from everything but abstention, and especially from inactivity in the af

                            1 Reply Last reply
                            0
                            • N Nish Nishant

                              Hi Tom I am not at all experienced with ATL, but I was wondering why we cannot use W2A macro to achieve what the guy wanted to do! Nish


                              The posting stats are now in PDF:- http://www.busterboy.org/codeproject/ Feel free to make your comments. Updated - May 04th, Saturday

                              T Offline
                              T Offline
                              Tim Smith
                              wrote on last edited by
                              #14

                              The most serious drawback of W2A, W2CA, xx2xx, is that for each invocation, new stack space is allocated. So, you can't really use them in a loop. Other than that, I use them all the time. :) Tim Smith I know what you're thinking punk, you're thinking did he spell check this document? Well, to tell you the truth I kinda forgot myself in all this excitement. But being this here's CodeProject, the most powerful forums in the world and would blow your head clean off, you've got to ask yourself one question, Do I feel lucky? Well do ya punk?

                              N 1 Reply Last reply
                              0
                              • T Tim Smith

                                The most serious drawback of W2A, W2CA, xx2xx, is that for each invocation, new stack space is allocated. So, you can't really use them in a loop. Other than that, I use them all the time. :) Tim Smith I know what you're thinking punk, you're thinking did he spell check this document? Well, to tell you the truth I kinda forgot myself in all this excitement. But being this here's CodeProject, the most powerful forums in the world and would blow your head clean off, you've got to ask yourself one question, Do I feel lucky? Well do ya punk?

                                N Offline
                                N Offline
                                Nish Nishant
                                wrote on last edited by
                                #15

                                Tim Smith wrote: The most serious drawback of W2A, W2CA, xx2xx, is that for each invocation, new stack space is allocated. So, you can't really use them in a loop. I think these issues have been partially improved in ATL 7.0 Nish


                                The posting stats are now in PDF:- http://www.busterboy.org/codeproject/ Feel free to make your comments. Updated - May 04th, Saturday

                                1 Reply Last reply
                                0
                                Reply
                                • Reply as topic
                                Log in to reply
                                • Oldest to Newest
                                • Newest to Oldest
                                • Most Votes


                                • Login

                                • Don't have an account? Register

                                • Login or register to search.
                                • First post
                                  Last post
                                0
                                • Categories
                                • Recent
                                • Tags
                                • Popular
                                • World
                                • Users
                                • Groups