P. *_*ery 1 c++ file-io winapi
我正在尝试使用c ++中的win32程序解析文本文件.是否有一种逐行读取文本文件的简单方法?我的文本文件由我想要存储在char数组中的字符串组成(const char*cArray [67]).这是我到目前为止所拥有的.我正在使用CreateFile和ReadFile.我从readfile获得访问冲突错误(0x000003e6):
CDECK::CDECK():filename(".\\Deck/list.txt")
{
LPVOID data = NULL;
hFile = CreateFileA(filename, GENERIC_READ,FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if(hFile == INVALID_HANDLE_VALUE)
MessageBox(NULL, L"Failed to CreateFile - 'hFile'", L"CDECK::CDECK()", MB_OK);
DWORD fileSize = GetFileSize(hFile, &fileSize);
DWORD read = -1;
if(!ReadFile(hFile, data, fileSize, &read, NULL))
{
DWORD err = GetLastError();
MessageBox(NULL, L"Failed to ReadFile - 'hFile'", L"CDECK::CDECK()", MB_OK);
}
return;
}
Run Code Online (Sandbox Code Playgroud)
Rob*_*obᵩ 10
是否有一种逐行读取文本文件的简单方法?
是:
{
std::ifstream hFile(filename);
std::vector<std::string> lines;
std::string line;
while(std::getline(hFile, line))
lines.push_back(line);
return lines;
}
Run Code Online (Sandbox Code Playgroud)
考虑以下代码:
LPVOID data = NULL;
if(!ReadFile(hFile, data, fileSize, &read, NULL))
Run Code Online (Sandbox Code Playgroud)
这data
是null,以下参数是整个文件的大小.你应该分配一个缓冲区,然后将指针传递给这样的缓冲区及其大小.ReadFile
函数将在哪里写入readed字节.
以下是使用静态大小缓冲区的简单方法:
char data[4096] = {};
if(!ReadFile(hFile, static_cast< LPVOID >( &data ), 4096, &read, NULL))
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
15839 次 |
最近记录: |