Windows Form C-Type String 型別轉換大全

前言

開始以 C++寫 Windows Form 之後,就開始了 String 字串型別地獄,除了 .NET Framework 用的 System::String^ 之外,如果想要使用 C 原生的函式就勢必得做型別的轉換,然後又因爲字符寬度不同的原因又分爲標準的 std::stringstd::wstring,這些型別彼此互不相容真的很麻煩,因此總結了一下之間的轉換方式。

轉型

std::string str std::wstring wstr

std::wstring wstr = std::wstring(str.begin(), str.end());

附帶一提,以常數 const 表示 wstring 的時候要寫成 L"sample string"

std::string or std::wstring str ⇒ System::String^ ss

System::String^ ss = gcnew System::String(str.c_str());

System::String^ ss ⇒ std::wstring wstr

pin_ptr<const wchar_t> str_c = PtrToStringChars(ss);
std:wstring wstr(str_c, ss->Length);

std::string / std::wstring str const char * (aka LPCSTR) / const wchar_t * (aka LPCWSTR) pstr

const char * pstr = str.c_str();

後記

這樣一來,就不怕各種函式所需要的各種 String 字串型別參數了。