Path: blob/master/examples/cppwin/TensorflowTTSCppInference/ext/ZCharScanner.h
1564 views
#pragma once12#define GBasicCharScanner ZStringDelimiter34#include <vector>5#include <string>67#define ZSDEL_USE_STD_STRING8#ifndef ZSDEL_USE_STD_STRING9#include "golem_string.h"10#else11#define GString std::string12#endif1314typedef std::vector<GString>::const_iterator TokenIterator;1516// ZStringDelimiter17// ==============18// Simple class to delimit and split strings.19// You can use operator[] to access them20// Or you can use the itBegin() and itEnd() to get some iterators21// =================22class ZStringDelimiter23{24private:25int key_search(const GString & s, const GString & key);26void UpdateTokens();27std::vector<GString> m_vTokens;28std::vector<GString> m_vDelimiters;2930GString m_sString;3132void DelimStr(const GString& s, const GString& delimiter, const bool& removeEmptyEntries = false);33void BarRange(const int& min, const int& max);34void Bar(const int& pos);35size_t tokenIndex;36public:37ZStringDelimiter();38bool PgBar;3940#ifdef _AFX_ALL_WARNINGS41CProgressCtrl* m_pBar;42#endif4344ZStringDelimiter(const GString& in_iStr) {45m_sString = in_iStr;46PgBar = false;4748}4950bool GetFirstToken(GString& in_out);51bool GetNextToken(GString& in_sOut);5253// std::String alts5455size_t szTokens() { return m_vTokens.size(); }56GString operator[](const size_t& in_index);5758GString Reassemble(const GString & delim, const int & nelem = -1);5960// Override to reassemble provided tokens.61GString Reassemble(const GString & delim, const std::vector<GString>& Strs,int nelem = -1);6263// Get a const reference to the tokens64const std::vector<GString>& GetTokens() { return m_vTokens; }6566TokenIterator itBegin() { return m_vTokens.begin(); }67TokenIterator itEnd() { return m_vTokens.end(); }6869void SetText(const GString& in_Txt) {70m_sString = in_Txt;71if (m_vDelimiters.size())72UpdateTokens();73}74void AddDelimiter(const GString& in_Delim);7576~ZStringDelimiter();77};78798081