Как узнать количество строк в текстовом файле, использую API функции (бех помощи файловых потоков)?
| Код | std::string sFileLines(const std::string &csFilePath) { unsigned long int ulLines = 0; //счётчик строк HANDLE hFile = INVALID_HANDLE_VALUE;
//открываем файл для чтения hFile = CreateFile(csFilePath.c_str(), GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); //проверяем на успешное открытие if (hFile == INVALID_HANDLE_VALUE) { return std::string(""); }
//читаем данные из файла for (;;) { DWORD dwBytesRead = 0; char n = 0x0A; //читаем одну запись if (!ReadFile(hFile, &n, sizeof(n), &dwBytesRead, (LPOVERLAPPED)NULL)) { CloseHandle(hFile); return std::string(""); } //проверяем на конец файла if (dwBytesRead == 0) { //если да, то выходим из цикла if (ulLines > 0) { ulLines ++; } break; } else { if (n == 0x0A) { ulLines ++; } } }
//закрываем дескриптор файла CloseHandle(hFile); char szFileLines[20]; memset(szFileLines, 0, sizeof(szFileLines)); sprintf_s(szFileLines, "%i", ulLines); //MessageBox(0, szFileLines, "", MB_OK);
return std::string(szFileLines); }
|
|