gpt4 book ai didi

c++ - 为 CreateDirectory 将 'const char*' 转换为 'LPCTSTR'

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:29:20 27 4
gpt4 key购买 nike

#include "stdafx.h"
#include <string>
#include <windows.h>
using namespace std;

int main()
{
string FilePath = "C:\\Documents and Settings\\whatever";
CreateDirectory(FilePath, NULL);
return 0;
}

错误:错误 C2664:“CreateDirectory”:无法将参数 1 从“const char *”转换为“LPCTSTR”

  1. 我如何进行这种转换?
  2. 下一步是将今天的日期设置为字符串或字符,并将其与文件路径连接起来。这会改变我执行第 1 步的方式吗?
  3. 我不擅长数据类型和转换,有没有适合 5 岁 child 的良好解释?

最佳答案

std::string 是一个包含基于char 的数据的类。要将 std::string 数据传递给 API 函数,您必须使用其 c_str() 方法获取指向字符串的实际数据。

CreateDirectory()TCHAR* 作为输入。如果定义了 UNICODE,则 TCHAR 映射到 wchar_t,否则它映射到 char。如果您需要坚持使用 std::string 但不想让您的代码识别 UNICODE,请改用 CreateDirectoryA(),例如:

#include "stdafx.h"
#include <string>
#include <windows.h>

int main()
{
std::string FilePath = "C:\\Documents and Settings\\whatever";
CreateDirectoryA(FilePath.c_str(), NULL);
return 0;
}

要使此代码能够识别 TCHAR,您可以改为这样做:

#include "stdafx.h"
#include <string>
#include <windows.h>

int main()
{
std::basic_string<TCHAR> FilePath = TEXT("C:\\Documents and Settings\\whatever");
CreateDirectory(FilePath.c_str(), NULL);
return 0;
}

然而,基于 Ansi 的操作系统版本早已过时,现在一切都是 Unicode。 TCHAR 不应再在新代码中使用:

#include "stdafx.h"
#include <string>
#include <windows.h>

int main()
{
std::wstring FilePath = L"C:\\Documents and Settings\\whatever";
CreateDirectoryW(FilePath.c_str(), NULL);
return 0;
}

关于c++ - 为 CreateDirectory 将 'const char*' 转换为 'LPCTSTR',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14370982/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com