
Добавил:
Вуз:
Предмет:
Файл:
#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