C++ 使用windows API写入txt文件
我试图通过ATL应用程序将一些行写入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
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。知道是什么引起的吗?