WinAPI CreateFile函数

asd*_*sdf 3 c++ winapi

我必须在c ++中编写CreateFile函数我写了这个,但它没有用

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

int main()
{
    HANDLE hfile = CreateFile(
           ".\temp.txt",                // "\\.\C:" 
           GENERIC_READ, 
           0,
           NULL,
           CREATE_NEW,
           FILE_ATTRIBUTE_NORMAL,
           NULL);

    //if (hFile == INVALID_HANDLE_VALUE) cout << "Unable to create file \n";
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

错误C2664:'CreateFileW':无法将参数1从'const char [10]'转换为'LPCWSTR'

我该如何解决这个错误?

Joa*_*son 7

错误消息告诉您它正在尝试调用CreateFileW哪个是广泛的字符版本CreateFile.你需要传递一个宽字符而不是普通字符;

hfile = CreateFile(
       L".\\temp.txt",               // Notice the L for a wide char literal 
       GENERIC_READ, 
       0,
       NULL,
       CREATE_NEW,
       FILE_ATTRIBUTE_NORMAL,
       NULL);
Run Code Online (Sandbox Code Playgroud)

更多信息可以在这里找到.

  • @user1394489 另外,如上面的评论中所述,如果您确实使用的是 `L"c:\name.txt"` 而不是 `L"c:\\name.txt"`,您的文件名将包含换行符`\n` 而不是名称前的反斜杠。 (2认同)