Скачиваний:
3
Добавлен:
15.08.2023
Размер:
1.15 Кб
Скачать
#pragma once

#include <sal.h>
#include <ostream>
#include <cassert>
#include <fstream>

#ifndef TSTRING
#define TSTRING

class tString
{
	unsigned int capacity;
	unsigned int length;

	char* str_buffer = nullptr;

	void tstrcpy(
		_In_ char* buffer,
		_In_z_ const char* string
	);

public:
	tString();
	tString(_In_ tString& tstr);
	tString(_In_z_ const char* str);
	tString(_In_z_ std::ifstream& file);
	~tString() { ::free(str_buffer); };

	bool find(_In_ const char* str);

	const char* cstr();

	unsigned int len() { return length; }

	unsigned int DirectSearch(
		_In_z_ const char* substr,
		_In_ unsigned int pose
	);

	unsigned int BMSearch(
		_In_z_ const char* substr,
		_In_ unsigned int pose
	);

	unsigned int BrootForce(
		_In_z_ const char* substr,
		_In_ unsigned int pose
	);

	friend std::ostream& operator<< (
		_In_  std::ostream& os,
		_In_ tString& tstr) {
		os.write(tstr.str_buffer, tstr.length);
		return os;
	}

	char operator[] (_In_  unsigned int index)
	{
		assert(index <= this->length);
		return this->str_buffer[index];
	}
};

#endif // !TSTRING

Соседние файлы в папке 2