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

}


上一篇:深度掌握java stream 流操作,让你的代码高出一个逼格!


下一篇:整理分享C#通过user32.dll模拟物理按键操作的代码