std::string
是一个保存char
基于数据的类。要将std::string
数据传递给 API 函数,您必须使用其c_str()
方法获取char*
指向字符串实际数据的指针。
CreateDirectory()
将 aTCHAR*
作为输入。如果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;
}