天天看点

错误 不存在从 “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;

继续阅读