Тема: Вивести номери рядків
Хочу зробити програму яка вгадує подію по опису. Треба спочатку створити "словник" і виводити номери рядків файла v.txt(із дієсловами) які співпадають із словами у тексті введеному користувачем. Має виходити запис типу
Process1:21,323,21,55
Process2:65,33,78
Виводить лише один номер.
#include <stdio.h>
#include <string.h>
#include <windows.h>
#include <iostream>
#include <string>
#include <vector>
#include <cstring>
#include <fstream>
using namespace std;
BOOL LoadFile(LPSTR& FileText, LPSTR FileName) {
HANDLE hFile;
BOOL bSuccess = FALSE;
hFile = CreateFile(FileName, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, 0);
if (hFile != INVALID_HANDLE_VALUE) {
DWORD FileSize;
FileSize = GetFileSize(hFile, NULL);
if (FileSize != 0xFFFFFFFF) {
FileText = (LPSTR)GlobalAlloc(GPTR, FileSize + 1);
if (FileText != NULL) {
DWORD Read;
if (ReadFile(hFile, FileText, FileSize, &Read, NULL)) {
FileText[FileSize] = 0;
bSuccess = TRUE;
}
}
}
CloseHandle(hFile);
}
return bSuccess;
}
std::vector<std::string> delim(const char *str) {
std::vector<std::string> result;
char *strCopy = _strdup(str);
char *p = strtok(strCopy, "\n\r");
while (p != NULL) {
result.push_back(p);
p = strtok(NULL, "\n\r");
}
free(strCopy);
return result;
}
int main() {
char *buff;
std::string s;
std::string name;
if (LoadFile(buff, "v.txt")) {
std::vector<std::string> verbs = delim(buff);
std::cout << "Process name: ";
cin >> name;
std::cout << "Process description: ";
cin >> s;
std::vector<std::string> text_words = delim(s.c_str());
cout << name << ":";
for (int i = 0; i < text_words.size(); i++) {
for (int j = 0; j<verbs.size(); j++) {
if (verbs[j] == text_words[i])
std::cout << j << ", ";
}
}
}
GlobalFree(buff);
return 0;
}