1
0

AutoWide.h 729 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. #ifndef AUTOWIDEH
  2. #define AUTOWIDEH
  3. #ifdef WIN32
  4. #include <windows.h>
  5. #include <stdlib.h>
  6. inline wchar_t *AutoWideDup(const char *convert, UINT codePage=CP_ACP)
  7. {
  8. if (!convert)
  9. return 0;
  10. wchar_t *wide = 0;
  11. int size = MultiByteToWideChar(codePage, 0, convert, -1, 0,0);
  12. if (!size)
  13. return 0;
  14. wide = (wchar_t *)malloc(size*sizeof(wchar_t));
  15. if (!MultiByteToWideChar(codePage, 0, convert, -1, wide,size))
  16. {
  17. free(wide);
  18. wide=0;
  19. }
  20. return wide;
  21. }
  22. class AutoWide
  23. {
  24. public:
  25. AutoWide(const char *convert, UINT codePage=CP_ACP) : wide(0)
  26. {
  27. wide = AutoWideDup(convert, codePage);
  28. }
  29. ~AutoWide()
  30. {
  31. free(wide);
  32. wide=0;
  33. }
  34. operator wchar_t *()
  35. {
  36. return wide;
  37. }
  38. private:
  39. wchar_t *wide;
  40. };
  41. #endif
  42. #endif