#pragma once
#include <string>

namespace strUtil
{
    // удаление заданного символа с обоих концов строки
    std::string trim(const std::string &str, const char trim_char = L' ');
    std::wstring trim(const std::wstring &str, const wchar_t trim_char = L' ');
    // удаление заданного символа в начале строки
    std::string trimLeft(const std::string &str, const char trim_char = L' ');
    std::wstring trimLeft(const std::wstring &str, const wchar_t trim_char = L' ');
    // удаление заданного символа в конце строки
    std::string trimRight(const std::string &str, const char trim_char = L' ');
    std::wstring trimRight(const std::wstring &str, const wchar_t trim_char = L' ');
    // замена всех символов src в строке на символы dst
    std::string replaceChar(const std::string &str, const char src, const char dst);
    std::wstring replaceChar(const std::wstring &str, const wchar_t src, const wchar_t dst);
    // замена всех символов, входящих в src в строке на символы dst
    std::string replaceChars(const std::string &str, const std::string &src, const char dst);
    std::wstring replaceChars(const std::wstring &str, const std::wstring &src, const wchar_t dst);
    // преобразование регистра, сделать все буквы большими
    std::string strToUpper(const std::string &str);
    std::wstring strToUpper(const std::wstring &str);
    // преобразование регистра, сделать все буквы маленькими
    std::string strToLower(const std::string &str);
    std::wstring strToLower(const std::wstring &str);
    // сокращение строки до заданной длины.
    std::string CropStr(const std::string &str, const size_t len);
    std::wstring CropStr(const std::wstring &str, const size_t len);

    // сравнение строк без учёта регистра
    bool equalNoCase(const std::string &a, const std::string &b);
    bool equalNoCase(const std::wstring &a, const std::wstring &b);

    // функции для конвертирования wstring <-> string
    std::wstring s2ws(const std::string &str);
    std::string ws2s(const std::wstring &wstr);
	// а это транзитные функции для конвертирования wstring <-> string
#if defined(_WIN32)
    std::wstring _t_s2ws(const std::_tstring &str);
	std::_tstring _t_ws2s(const std::wstring &wstr);
#else
	std::wstring _t_s2ws(const std::string &str);
	std::string _t_ws2s(const std::wstring &wstr);
#endif
}
