天天看點

錯誤 不存在從 “std::string“ 到 “LPCSTR“ 的适當轉換函數

遇到這樣的問題需要将std:string類型轉為LPCSTR類型。

标準庫的std::string轉換成LPCSTR很簡單:直接調用c_str()即可。例:

std::string a="abc";

LPCSTR str = a.c_str();

還有一種情況是wstring

标準庫還有一個wstring,代表寬字元的string,std::wstring轉換成LPCWSTR也一樣很簡單:

std::wstring a = L"abc";

LPCWSTR str = a.c_str();

再加一種情況:

不存在從 “std::string” 到 “LPCWSTR” 的适當轉換函數

#include <string>

#include <iostream>

#include<cstdlib>

typedef const wchar_t* LPCWSTR;//#include<winnt.h>

using namespace std;

LPCWSTR stringToLPCWSTR(string orig)

{

   size_t origsize = orig.length() + 1;

   const size_t newsize = 100;

   size_t convertedChars = 0;

   wchar_t* wcstring = new wchar_t[sizeof(wchar_t) * (orig.length() - 1)];

   mbstowcs_s(&convertedChars, wcstring, origsize, orig.c_str(), _TRUNCATE);

   return wcstring;

}

int main()

   string in = "dsfdsf";

   LPCWSTR out = stringToLPCWSTR(in);

   wcout << out << endl;

   //别忘了釋放記憶體~

   delete out;

   out = nullptr;

   return 0;

繼續閱讀