StringHelper.h 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. #pragma once
  2. #include <wrl.h>
  3. #include <string>
  4. static void ConvertString(Platform::String^ src, std::string& dst)
  5. {
  6. int len = WideCharToMultiByte(CP_ACP, 0, src->Begin(), -1, nullptr, 0, nullptr, nullptr);
  7. dst.resize(len - 1);
  8. WideCharToMultiByte(CP_ACP, 0, src->Begin(), -1, (char*)dst.data(), len, nullptr, nullptr);
  9. }
  10. static std::string ConvertString(Platform::String^ src)
  11. {
  12. int len = WideCharToMultiByte(CP_ACP, 0, src->Begin(), -1, nullptr, 0, nullptr, nullptr);
  13. std::string dst(len - 1, ' ');
  14. WideCharToMultiByte(CP_ACP, 0, src->Begin(), -1, (char*)dst.data(), len, nullptr, nullptr);
  15. return dst;
  16. }
  17. static std::string ConvertString(const wchar_t* src)
  18. {
  19. int len = WideCharToMultiByte(CP_ACP, 0, src, -1, nullptr, 0, nullptr, nullptr);
  20. std::string dst(len - 1, ' ');
  21. WideCharToMultiByte(CP_ACP, 0, src, -1, (char*)dst.data(), len, nullptr, nullptr);
  22. return dst;
  23. }
  24. static std::string ConvertString(const std::wstring& src)
  25. {
  26. return ConvertString(src.c_str());
  27. }
  28. static void ConvertString(const std::string& src, std::wstring& dst)
  29. {
  30. int len = MultiByteToWideChar(CP_ACP, 0, src.c_str(), -1, nullptr, 0);
  31. dst.resize(len - 1);
  32. MultiByteToWideChar(CP_ACP, 0, src.c_str(), -1, (wchar_t*)dst.data(), len);
  33. }
  34. static Platform::String^ ConvertString(const char* src)
  35. {
  36. int len = MultiByteToWideChar(CP_ACP, 0, src, -1, nullptr, 0);
  37. auto wc = new wchar_t[len];
  38. MultiByteToWideChar(CP_ACP, 0, src, -1, wc, len);
  39. auto dst = ref new Platform::String(wc);
  40. delete[] wc;
  41. return dst;
  42. }
  43. static Platform::String^ ConvertString(const std::string& src)
  44. {
  45. return ConvertString(src.c_str());
  46. }