News:

When registered with our forums, feel free to send a "here I am" post here to differ human beings from SPAM bots.

Main Menu

Convert the char to an wchar_t

Started by Schoppy, January 19, 2007, 09:18:26 AM

Previous topic - Next topic

Schoppy

Hi,
I have a Problem. I must convert an Char to an wchar_t.

My Sytem: Code::Blocks 1 RC2 + MinGW + WindowsXP



void DLL_EXPORT * DEMOText(
                                char Text,
                                int iTopX, int iTopY, int iBotX, int iBotY,
                                bool boBorder)

{
// Convert the char(Text) to an wchar_t ???????


       return (void *)guienv->addStaticText(
            Text, //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< this must a wchar_t
            rect<int>(iTopX, iTopY, iBotX+iTopX, iBotY+iTopY),
            boBorder);

}



Sorry for my bad English :-)
Can someone help me ?


Thanks
Schoppy





TDragon

#1
I see you're using Irrlicht; a quick Google for "Irrlicht and wchar_t" turned up the mbstowcs function. Here's a quick question: do you really only want to pass a single character to your DEMOText function (that's what you're doing), rather than a string? Since I doubt you do, following is an improved version that should do what you want.


#include <cstdio>
#include <cstdlib>


IGUIStaticText* DLL_EXPORT DEMOText(char const* Text,
                                    int iX,
                                   int iY,
                                   int iWidth,
                                   int iHeight,
                                   bool boBorder)
{
    size_t alloc_len = strlen(Text) + 1;
    wchar_t* wc_out = new wchar_t[alloc_len];
    size_t result = mbstowcs(wc_out, Text, alloc_len);

    IGUIStaticText* ret_val = 0;
    if (result > 0)
    {
        ret_val = guienv->addStaticText(Text,
         rect< int >(iX, iY, iX + iWidth, iY + iHeight),
         boBorder);
    }

    delete[] wc_out;
    return ret_val;
}
[url="https://jmeubank.github.io/tdm-gcc/"]https://jmeubank.github.io/tdm-gcc/[/url] - TDM-GCC compiler suite for Windows (GCC 9.2.0 2020-03-08, 32/64-bit, no extra DLLs)

kelo81

The irrclicht string implementation already has support for converting between both formats I think (char* and w_char*), I tried to assign some values between stringw and stringc and it works fine! :) The mbstowcs could be helpful for unique char operations.
Ezequiel Ruiz
Tango/04 consultant
www.tango04.com

TDragon

Quote from: kelo81 on January 19, 2007, 06:26:18 PM
The irrclicht string implementation already has support for converting between both formats I think (char* and w_char*), I tried to assign some values between stringw and stringc and it works fine! :) The mbstowcs could be helpful for unique char operations.
Thanks for jumping in! I've never used Irrlicht on a regular basis, and wasn't aware of its string class.


IGUIStaticText* DLL_EXPORT DEMOText(char const* Text,
                                    int iX,
                                    int iY,
                                    int iWidth,
                                    int iHeight,
                                    bool boBorder)
{
    core::stringw wc_text(Text);
    return guienv->addStaticText(wc_text.c_str(),
     rect< int >(iX, iY, iX + iWidth, iY + iHeight),
     boBorder);
}
[url="https://jmeubank.github.io/tdm-gcc/"]https://jmeubank.github.io/tdm-gcc/[/url] - TDM-GCC compiler suite for Windows (GCC 9.2.0 2020-03-08, 32/64-bit, no extra DLLs)

Schoppy

Thats it. Thank you for your help.  :D

dgrafix

Hi thanks for posting this, however, why is this needed?
delete[] wc_out;


Unless its returning the pointer shouldnt it automatically get dumped on function return?

Deschamps

Quote from: dgrafixhowever, why is this needed? delete[] wc_out;

AFAIK, all the dynamicly reserved memory *must* be explicitly unassigned using 'delete' for avoiding memory leaks, and obviously it must be done while the object is accesible (i.e. before returning the function).
Those who were seen dancing were thought to be insane by those who could not hear the music