@Homer_Simpson

Как найти в vector строку по регулярному выражению?

Считываю память процесса и заношу все в vector
std::vector<char> ProcData;

void GetProcMemToVec(DWORD dwPID)
{
	HANDLE process = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwPID);

	if (process)
	{
		SYSTEM_INFO si;
		GetSystemInfo(&si);

		MEMORY_BASIC_INFORMATION info;
		char* p = 0;

		while (p < si.lpMaximumApplicationAddress)
		{
			if (VirtualQueryEx(process, p, &info, sizeof(info)) == sizeof(info))
			{
				p = (char*)info.BaseAddress;
				ProcData.resize(info.RegionSize);
				SIZE_T bytesRead;

				ReadProcessMemory(process, p, &ProcData[0], info.RegionSize, &bytesRead);
				p += info.RegionSize;
			}
		}
	}
}
Как проверить имеется ли в векторе строка, начинающаяся допустим с 7132(содержащая только числа после нее) и если имеется, занести в буффер 7132+10 символов после них?
  • Вопрос задан
  • 224 просмотра
Пригласить эксперта
Ответы на вопрос 1
Taraflex
@Taraflex
Ищу работу. Контакты в профиле.
https://ideone.com/RbikEj
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <vector>

using namespace std;

int main() {
	vector<char> ProcData = {'T','e','s','t',' ','t','e','x','t',' ','7','1','3','2',' ','L','o','r','e','m',' ','i','p','s','u','m',' ','d','o','l','o','r',' ','s','i','t',' ','a','m','e','t'};
	
	const char *sub = strstr ( ProcData.data(), "7132" );
	if(sub){
		char word[15] = {'\0'};
		strncpy( word, sub, 14 );
		cout << word;
	}
	
	return 0;
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы