?? korisno.h
字號(hào):
/*
Klasa sa korisnim procedurama koje se koriste u raznim drugim klasama.
Klasa je 'singleton': pristup procedurama se vrsi preko pointera 'KKorisno::Instance()'.
*/
#ifndef KORISNO_H
#define KORISNO_H
#include <string>
#include <vector>
using namespace std;
//******************************* Deklaracije << BEGIN >> *******************************
// - enumeracije
enum IzuzetakID;
enum UIFormat;
// - kalse
class KIzuzetak;
class KKorisno;
class KString;
// - tipovi
typedef vector<KString> TListaStringova;
// - konstante
const string RAZMACI = " \t";
//******************************** Deklaracije << END >> ********************************
// ID-ovi izuzetaka
enum IzuzetakID{ CIFRA_VAN_OSNOVE
};
// Klasa koja se koristi u izuzecima ( exception )
class KIzuzetak{
public:
KIzuzetak( void ){}
KIzuzetak( IzuzetakID ident ) : ID( ident ) { }
IzuzetakID DajID( void ){ return ID; }
private:
IzuzetakID ID;
};
// Tipovi formata stringova ( prefiks FS od 'Format Stringa' )
enum UIFormat { FS_BCD_ASCII = 1, // bajt se cita/pise kao 2 ASCII znaka ( "00" - "FF" )
FS_BAJT // bajt se cita/pise bezi ikakvih modifikacija
};
// Klasa sa korisnim procedurama za rad sa stringovima.
// Takodje, klasa sluzi za pravljenje vektora od stringova(TListaStringova).
// ( ako stavim direktno vector<string>, dobijam 'Warning' od kompajlera ).
class KString{
public:
string cString;
// Konstruktori
KString( string cSadrzaj );
KString( void );
// Operator pristupa elementu stringa
char& operator[] ( unsigned int nPos );
// Operator +=
KString& operator+=( const KString& s );
// Vraca duzinu stringa
unsigned int size( void ) const;
// Vraca podstring, od pozicije nPozicija, duzine nDuzina
KString substr( unsigned int nPozicija, unsigned int nDuzina ) const;
// Vraca indeks prvog elementa stringa koji nije razmak ili tabulator, racunajuci od date pozicije.
unsigned int PreskociRazmake( unsigned int nPozicija=0 );
// Vraca indeks prvog elementa stringa koji je razmak ili tabulator, racunajuci od date pozicije.
unsigned int PreskociDoPrvogRazmaka( unsigned int nPozicija=0 );
// Izdvaja 'rec'( deo stringa koji ne sadrzi ramake ) pocev od date pozicije.
// Vraca prvu poziciju iza nadjene reci.
unsigned int IzdvojiRec( unsigned int nPozicija, string& cRec );
// Dopunjava string datim znakom sleva, do zadate duzine
// Ukoliko je string vece duzine od nDuzina, vrsi se odsecanje na zadatu duzinu.
KString lpad( unsigned char cZnak, unsigned int nDuzina );
// Dopunjava string datim znakom zdesna, do zadate duzine;
// Ukoliko je string vece duzine od nDuzina, vrsi se odsecanje na zadatu duzinu.
KString rpad( unsigned char cZnak, unsigned int nDuzina );
// Prevodi string u velika slova;
// ako je 'bKonvertUSpecZnak = true' vrsi i konverziju u specijalni kod
KString ToUpper( bool bKonvertUSpecZnak = false );
// Proverava da li je string decimalni broj
bool IsDigit( void );
};
// Klasa sa raznim korisnim procedurama
class KKorisno {
public:
// Procedura za pristup jedinom objektu klase
static KKorisno* Instance( void );
// Za dati bajt, funkcija vraca string od 2 ASCII znaka ( "00" - "FF" ); Koristi se kod ispisa u BCD formatu.
char* BajtUBCD_ASCII( unsigned char bajt, char* str );
// Za dati ASCII znak koji predstavlja HEX cifru ( '0'-'F' ), funkcija vraca celobrojnu vrednost ( 0-16 ).
unsigned char ASCIIHEXuBajt( char znak );
// Za dati string od 1 ili 2 ASCII znaka ( "00" - "FF" ) vraca celobrojnu vrednost ( 0 -255 ).
unsigned char BCDuBajt( char* str );
// Za dati string od 1 ili 2 ASCII znaka ( "00" - "FF" ) vraca celobrojnu vrednost ( 0 -255 ).
unsigned char BCDuBajt( string str );
// Vraca 'formatiranu' verziju datog stringa ( prevodi bajtove u oblik pogodan za ispis ).
string FormatString( string cString, UIFormat format = FS_BCD_ASCII, bool bSaRazmacima = true );
// Vraca 'deformatiranu' verziju datog stringa ( oblik pogodan za ispis prevodi u bajtove ).
string DeformatString( KString cUlazniStr, UIFormat format = FS_BCD_ASCII );
// Konvertuje dati string u integer.
// Podrazumeva da je string sastavljen od niblova u datoj osnovi
// ( npr. za osnovu 16, niblovi su 0-F ).
// Ako je bIzuzetak = true, proverava da li niblovi odgovaraju datoj osnovi i
// baca izuzetak ako ne odgovaraju.
unsigned int KonvertUInt( string cStr, unsigned int nOsnova = 16, bool bIzuzetak = false );
// Konvertuje dati BCD string u integer.
// Podrazumeva da je string sastavljen od niblova 0-9 ( osnova 10 ).
// Ako je bIzuzetak = true, proverava da li su niblovi dekadne cifre i baca izuzetak ako nisu.
unsigned int KonvertBCDUInt( string cStr, bool bIzuzetak = false );
// Konvertuje ceo broj( integer ) u string sastavljen od niblova u odgovarajucoj osnovi.
// Na primer, za nOsnova = 16, niblovi su 0-F.
// Dopunjava vodecim nulama do date duzine.
KString KonvertIntUNiblString( unsigned int nInt, unsigned int nDuzina, unsigned int nOsnova = 16 );
// Konvertuje ceo broj( integer ) u BCD string ( string sastavljen od niblova 0-9 ).
// Dopunjava vodecim nulama do date duzine.
KString KonvertIntUBCD( unsigned int nInt, unsigned int nDuzina );
// Konvertuje integer u string date duzine ( vrsi odsecanje ako je integer duzi ).
// Ako je bDopuni=true, dopunjava vodecim nulama.
string KonvertIntUString( unsigned int nInt, unsigned int nDuzina, bool bDopuni=true );
// Konvertuje string sa BCD ciframa u realan broj.
// Ako je bIzuzetak = true, proverava da li su niblovi dekadne cifre ( 0-9 )
// i baca izuzetak ako nisu.
double BCDStringUDouble( string cStr, unsigned char nBrojDecimala, bool bIzuzetak = false );
// Konvertuje bool u string ( 'true' i 'false' )
string BoolToString( bool bBool );
// Konvertuje string u bool : ako je string 'true' konvertuje ga u true, ostalo u false
bool StringUBool( string cStr );
// Grupu BCD cifara konvertuje u niz brojeva tipa 'double'.
// Zadaje se broj brojeva, duzina ( u bajtovima ) jednog broja i
// broj BCD cifara iza decimalne tacke.
// U slucaju da konverzija nekog broja ne uspe, vraca false.
// Preko promenljive nBrojIzdvojenihPodataka vraca broj double
// brojeva izdvojenih iz ulaznog stringa ( moze da bude
// manje od nTrazeniBrojPodataka ).
bool StringUNizDouble( const string& cKorisniPodaci,
unsigned int nTrazeniBrojPodataka,
int nDuzinaPodatka,
int nBrojBCDDecimala,
double* nDoubleNiz,
unsigned int& nBrojIzdvojenihPodataka );
private:
// Posto je klasa singlton, konstruktor je privatni
KKorisno( void ){}
};
#endif
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -