43 lines
658 B
C
43 lines
658 B
C
|
#ifndef NULLSOFT_AUTOCHARH
|
||
|
#define NULLSOFT_AUTOCHARH
|
||
|
|
||
|
class AutoChar
|
||
|
{
|
||
|
public:
|
||
|
AutoChar(const wchar_t *convert) : allocated(false), narrow(0)
|
||
|
{
|
||
|
// review maybe CP_UTF8?
|
||
|
|
||
|
int size = WideCharToMultiByte(CP_ACP, 0, convert, -1, 0, 0, NULL, NULL);
|
||
|
if (!size)
|
||
|
return;
|
||
|
|
||
|
narrow = new char[size];
|
||
|
allocated=true;
|
||
|
|
||
|
if (!WideCharToMultiByte(CP_ACP, 0, convert, -1, narrow, size, NULL, NULL))
|
||
|
{
|
||
|
delete [] narrow;
|
||
|
narrow=0;
|
||
|
allocated=false;
|
||
|
}
|
||
|
}
|
||
|
~AutoChar()
|
||
|
{
|
||
|
if (allocated)
|
||
|
{
|
||
|
delete [] narrow;
|
||
|
narrow=0;
|
||
|
allocated=false;
|
||
|
}
|
||
|
}
|
||
|
operator char *()
|
||
|
{
|
||
|
return narrow;
|
||
|
}
|
||
|
private:
|
||
|
bool allocated;
|
||
|
char *narrow;
|
||
|
};
|
||
|
|
||
|
#endif
|