Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/136.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用windows API写入txt文件_C++_Winapi_Writefile - Fatal编程技术网

C++ 使用windows API写入txt文件

C++ 使用windows API写入txt文件,c++,winapi,writefile,C++,Winapi,Writefile,我试图通过ATL应用程序将一些行写入txt文件。下面是我使用的代码片段: HANDLE hFile = CreateFile(ofn.lpstrFile, GENERIC_READ | GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); DWORD

我试图通过ATL应用程序将一些行写入txt文件。下面是我使用的代码片段:

HANDLE hFile = CreateFile(ofn.lpstrFile, 
            GENERIC_READ | GENERIC_WRITE,
            0,
            NULL, 
            CREATE_ALWAYS,
            FILE_ATTRIBUTE_NORMAL,
            NULL);

        DWORD dwBytesWritten = 0;

        std::list<CString> helpList;
        std::list<CString>::iterator it;
        helpList.push_back(L"First Line\r\n");
        helpList.push_back(L"Second Line");

        for(it=helpList.begin(); it!=helpList.end(); ++it)
            WriteFile( hFile, (*it).GetString(), (*it).GetLength(), &dwBytesWritten, NULL );

        CloseHandle(hFile); 
HANDLE hFile=CreateFile(ofn.lpstrFile,
一般的读,一般的写,
0,
无效的
永远创造你,
文件\u属性\u正常,
无效);
DWORD DWBYTESSWRITED=0;
列表帮助列表;
std::list::迭代器;
帮助列表。向后推(L“第一行\r\n”);
帮助列表。向后推(L“第二行”);
for(it=helpList.begin();it!=helpList.end();+it)
WriteFile(hFile,(*it.GetString(),(*it.GetLength(),&dwbytesWrite,NULL);
闭合手柄(hFile);
尽管一切正常,但最终没有写入文件。我应该在代码中更改什么

两个问题:

  • 使用
    CloseHandle()
  • WriteFile()
    的长度参数以字节为单位,但您正在指定字符。因为您使用的是宽字符,所以需要将长度值乘以字符的大小

  • 您是否检查了对
    CreateFile
    的调用是否确实成功?与
    WriteFile
    调用相同?在使用
    CloseHandle(hFile)
    写入文件句柄后,是否关闭了该文件句柄?dwShareMode=防止其他进程在请求删除、读取或写入访问权限时打开文件或设备。假设已经存在的文件不应该被共享。好的,上面的未实现if语句阻止程序到达给定的代码行。但是在更正它之后,txt文件中唯一的一行看起来是:FNUL iNUL rNUL sNUL tNUL sNUL eNUL cNUL oNUL nNUL dNUL。知道是什么引起的吗?