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. TCHAR issue

TCHAR issue

Scheduled Pinned Locked Moved C / C++ / MFC
helpc++tutorial
12 Posts 7 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.
  • G Offline
    G Offline
    goldenrose9
    wrote on last edited by
    #1

    In Win32 C++ how to convert

    TCHAR* to LPCTSTR
    TCHAR to LPTSTR

    Please help...:confused::confused:

    gold

    J L R C R 5 Replies Last reply
    0
    • G goldenrose9

      In Win32 C++ how to convert

      TCHAR* to LPCTSTR
      TCHAR to LPTSTR

      Please help...:confused::confused:

      gold

      J Offline
      J Offline
      jk chan
      wrote on last edited by
      #2

      use MultiByteToWideChar and WideCharToMultiByte functions. see http://msdn.microsoft.com/en-us/library/dd319072(v=vs.85).aspx[^] or you can use mbstowcs etc functions.You need to set locale before using it( setlocale ) see http://msdn.microsoft.com/en-in/library/k1f9b8cy(v=vs.80).aspx[^] I hopes you know what a TCHAR is. if you application type is multibyte TCHAR is char , otherwise wchar_t

      If u can Dream... U can do it

      1 Reply Last reply
      0
      • G goldenrose9

        In Win32 C++ how to convert

        TCHAR* to LPCTSTR
        TCHAR to LPTSTR

        Please help...:confused::confused:

        gold

        L Offline
        L Offline
        Lost User
        wrote on last edited by
        #3

        What do you mean by convert? TCHAR* is merely a pointer to a char or wchar_t depending on the definition of UNICODE. LPCTSTR is a typedef to const TCHAR* so no conversion is necessary; but you may need a cast to satisfy the compiler. TCHAR is a single character so cannot be converted or cast to LPTSTR; if you actually meant TCHAR* then both expressions evaluate to the same thing: a pointer to a character or wide character.

        Just say 'NO' to evaluated arguments for diadic functions! Ash

        G 1 Reply Last reply
        0
        • L Lost User

          What do you mean by convert? TCHAR* is merely a pointer to a char or wchar_t depending on the definition of UNICODE. LPCTSTR is a typedef to const TCHAR* so no conversion is necessary; but you may need a cast to satisfy the compiler. TCHAR is a single character so cannot be converted or cast to LPTSTR; if you actually meant TCHAR* then both expressions evaluate to the same thing: a pointer to a character or wide character.

          Just say 'NO' to evaluated arguments for diadic functions! Ash

          G Offline
          G Offline
          goldenrose9
          wrote on last edited by
          #4

          Thanx, my one doubt is cleared, about TCHAR to LPTSTR My Program deals with UNICODE only a small example will very helpfull for me, of how to convert TCHAR* to LPCTSTR and LPTSTR. Thanx in advance.

          gold

          L 1 Reply Last reply
          0
          • G goldenrose9

            In Win32 C++ how to convert

            TCHAR* to LPCTSTR
            TCHAR to LPTSTR

            Please help...:confused::confused:

            gold

            R Offline
            R Offline
            Roger Broomfield
            wrote on last edited by
            #5

            TCHAR* to LPCTSTR is a simple typecast

            TCHAR* pch;
            LPCTSTR pcch = (LPCTSTR)pch;

            TCHAR to LPTSTR is an address of operator

            TCHAR ch;
            LPTSTR pch = &ch;

            G 1 Reply Last reply
            0
            • G goldenrose9

              Thanx, my one doubt is cleared, about TCHAR to LPTSTR My Program deals with UNICODE only a small example will very helpfull for me, of how to convert TCHAR* to LPCTSTR and LPTSTR. Thanx in advance.

              gold

              L Offline
              L Offline
              Lost User
              wrote on last edited by
              #6

              goldenrose9 wrote:

              a small example will very helpfull for me, of how to convert TCHAR* to LPCTSTR and LPTSTR.

              There is no conversion involved; as I said in my previous post TCHAR* and LPTSTR equate to the same thing, a pointer to a string (character array). LPCTSTR is the same as const TCHAR*, a pointer to a string constant.

              Just say 'NO' to evaluated arguments for diadic functions! Ash

              1 Reply Last reply
              0
              • R Roger Broomfield

                TCHAR* to LPCTSTR is a simple typecast

                TCHAR* pch;
                LPCTSTR pcch = (LPCTSTR)pch;

                TCHAR to LPTSTR is an address of operator

                TCHAR ch;
                LPTSTR pch = &ch;

                G Offline
                G Offline
                goldenrose9
                wrote on last edited by
                #7

                LPTSTR __stdcall gHelp(TCHAR value)
                {
                LPTSTR pch;
                pch = &value;
                return pch;
                }

                compiler gives warning
                warning C4090: 'return' : different 'const' qualifiers

                gold

                L S 2 Replies Last reply
                0
                • G goldenrose9

                  In Win32 C++ how to convert

                  TCHAR* to LPCTSTR
                  TCHAR to LPTSTR

                  Please help...:confused::confused:

                  gold

                  C Offline
                  C Offline
                  Cedric Moonen
                  wrote on last edited by
                  #8

                  Here[^] is an excellent article explaining everything you need to understand C++ strings.

                  Cédric Moonen Software developer
                  Charting control [v3.0] OpenGL game tutorial in C++

                  1 Reply Last reply
                  0
                  • G goldenrose9

                    LPTSTR __stdcall gHelp(TCHAR value)
                    {
                    LPTSTR pch;
                    pch = &value;
                    return pch;
                    }

                    compiler gives warning
                    warning C4090: 'return' : different 'const' qualifiers

                    gold

                    L Offline
                    L Offline
                    Lost User
                    wrote on last edited by
                    #9

                    You will also have a problem that you are returning a TCHAR* to a TCHAR value, not an array (i.e. string). Do not do this or you will end up with memory overwrites and/or invalid data. As to your compiler warning, you must have a definition of gHelp which reads something like:

                    LPCTSTR __stdcall gHelp(TCHAR value);

                    Just say 'NO' to evaluated arguments for diadic functions! Ash

                    1 Reply Last reply
                    0
                    • G goldenrose9

                      In Win32 C++ how to convert

                      TCHAR* to LPCTSTR
                      TCHAR to LPTSTR

                      Please help...:confused::confused:

                      gold

                      R Offline
                      R Offline
                      Rajesh R Subramanian
                      wrote on last edited by
                      #10

                      goldenrose9 wrote:

                      TCHAR* to LPCTSTR

                      Usually, no conversion needed. If a function is promising you that it won't modify the contents (thereby expecting an LPCTSTR), you can still pass on a normal TCHAR* to it.

                      goldenrose9 wrote:

                      TCHAR to LPTSTR

                      That makes absolutely no sense. TCHAR is a character (wide or not depends on the build), and LPTSTR is a pointer to one such character. How can you convert one to another?!

                      It was ever thus, the Neophiles will always rush out and get 'The Latest Thing' at a high price and with all the inherent faults - Dalek Dave.

                      G 1 Reply Last reply
                      0
                      • R Rajesh R Subramanian

                        goldenrose9 wrote:

                        TCHAR* to LPCTSTR

                        Usually, no conversion needed. If a function is promising you that it won't modify the contents (thereby expecting an LPCTSTR), you can still pass on a normal TCHAR* to it.

                        goldenrose9 wrote:

                        TCHAR to LPTSTR

                        That makes absolutely no sense. TCHAR is a character (wide or not depends on the build), and LPTSTR is a pointer to one such character. How can you convert one to another?!

                        It was ever thus, the Neophiles will always rush out and get 'The Latest Thing' at a high price and with all the inherent faults - Dalek Dave.

                        G Offline
                        G Offline
                        goldenrose9
                        wrote on last edited by
                        #11

                        thanx a lot.

                        gold

                        1 Reply Last reply
                        0
                        • G goldenrose9

                          LPTSTR __stdcall gHelp(TCHAR value)
                          {
                          LPTSTR pch;
                          pch = &value;
                          return pch;
                          }

                          compiler gives warning
                          warning C4090: 'return' : different 'const' qualifiers

                          gold

                          S Offline
                          S Offline
                          Stefan_Lang
                          wrote on last edited by
                          #12

                          This won't work. You are passing the TCHAR variable by value, so the parameter value is just a temporary local copy, and the address of it will be invalidated upon return! Pass the TCHAR parameter by reference instead, like this:

                          LPTSTR __stdcall gHelp(TCHAR& value)
                          ...

                          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