首先,究竟是什么?我猜它是一个指针(LPC意味着长指针常量),但"W"是什么意思?它是指向字符串的特定指针还是指向特定字符串的指针?例如,我想关闭一个名为"TestWindow"的窗口.
HWND g_hTest;
LPCWSTR a;
*a = ("TestWindow");
g_hTest = FindWindowEx(NULL, NULL, NULL, a);
DestroyWindow(g_hTest);
Run Code Online (Sandbox Code Playgroud)
代码是非法的,它不起作用,因为const char [6]无法转换为CONST WCHAR.我根本得不到它.我想清楚地了解所有这些LPCWSTR,LPCSTR,LPSTR.我试图找到一些东西,但我更加困惑.在msdn网站FindWindowEx被声明为
HWND FindWindowEx(
HWND hwndParent,
HWND hwndChildAfter,
LPCTSTR lpszClass,
LPCTSTR lpszWindow
);
Run Code Online (Sandbox Code Playgroud)
所以最后一个参数是LPCSTR,编译器要求LPCWSTR.请帮忙.
在C++ 17的文件系统是基于Boost.Filesystem的.
我现在正在Windows上使用VS2017.
#include <filesystem>
namespace fs = std::experimental::filesystem;
Run Code Online (Sandbox Code Playgroud)
我遍历一个目录
for (auto& p: fs::directory_iterator("media"))
Run Code Online (Sandbox Code Playgroud)
我想将路径传递给一个将文件路径作为的函数 const char *
我在这里找到了一个关于boost文件系统的类似问题.核心差异在于C++ 17中的路径基于a value_type.哪里
value_type:文件系统的本机编码使用的字符类型:POSIX上的char,Windows上的wchar_t
所以我得到的是一个const wchar_t *字符串.
以下"适用于我":
char file[2000];
wcstombs(file, p.path().c_str(), 2000);
auto image = SDL_LoadBMP(file);
Run Code Online (Sandbox Code Playgroud)
我正在寻找一个不同的版本,因为这个实现是各种乱码(衰减数组到指针和_CRT_SECURE_NO_WARNINGS).
我正在寻找一个更漂亮的版本,可以直接从路径到const char *在Windows上使用新的C++ 17文件系统.
这是我用过的SDL2项目.
#define _CRT_SECURE_NO_WARNINGS 1
#include <SDL.h>
#include <vector>
#include <filesystem>
namespace fs = std::experimental::filesystem;
int main(int argc, char* argv[])
{
SDL_Init(SDL_INIT_EVERYTHING);
auto window = …Run Code Online (Sandbox Code Playgroud)