如何在WinAPI函数中将字符串转换为LPSTR,该函数将输出存储在字符串中

use*_*882 1 string winapi visual-c++

我试图将一些内容存储到字符串变量中,方法是将它作为参数传递给各种类型的Windows API函数,这些函数接受像char*这样的变量.

例如,我的代码是: -

std::string myString;
GetCurrentDirectoryA( MAX_PATH, myString );
Run Code Online (Sandbox Code Playgroud)

现在,在这种情况下,如何将字符串变量转换为LPSTR.

请注意,此函数不是用于传递字符串的内容作为输入,但该函数在执行后将一些内容存储到字符串变量中.因此,排除了myString.c_str().

编辑:我有一个解决方法,删除字符串的概念,并用类似的东西替换它

char myString[ MAX_PATH ];
Run Code Online (Sandbox Code Playgroud)

但这不是我的目标.我想利用字符串.有可能吗?

也像铸造一样

GetCurrentDirectoryA( MAX_PATH, ( LPSTR ) myString );
Run Code Online (Sandbox Code Playgroud)

不管用.

在此先感谢您的帮助.

Sim*_*ier 5

通常,人们会重写他们需要std::string友好的Windows功能,如下所示:

std::string GetCurrentDirectoryA()
{
  char buffer[MAX_PATH];
  GetCurrentDirectoryA( MAX_PATH, buffer );
  return std::string(buffer);
}
Run Code Online (Sandbox Code Playgroud)

或者这个用于广泛的char支持:

std::wstring GetCurrentDirectoryW()
{
  wchar_t buffer[MAX_PATH];
  GetCurrentDirectoryW( MAX_PATH, buffer );
  return std::wstring(buffer);
}
Run Code Online (Sandbox Code Playgroud)