⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 misc.h

📁 qgo-1.5.4-r3.tar.gz linux下一个很好玩的游戏
💻 H
字号:
/* * misc.h */#ifndef MISC_H#define MISC_H#include <qstring.h>/*struct start_len{	int start;	int len;};*/template<class T> class Misc{	public:		Misc() {};		virtual ~Misc() {};		// find element (0, 1, 2,...) in string		// element del1 is third parameter,		// optionally right delimiter (del2), else del2 = del1		// killblanks -> only with right del. -> skip all blanks in string		T element(const T &line, unsigned int index, const T &del1 = " ", const T &del2 = 0, bool killblanks = false) const;//		start_len elem(const T &line, unsigned int index, const T &del1 = 0, const T &del2 = 0, bool killblanks = false) const;};/*template<class T> start_len Misc<T>::elem(const T &line, unsigned int index, const T &del1, const T &del2, bool killblanks) const{	int len = line.length();	int idx = index;	int i;	start_len result = {0,0};	T sub;	// kill trailing white spaces	while ((int) line[len-1] < 33 && len > 0)		len--;	// right delimiter given?	if (!del2)	{		// ... no right delimiter		// element("a b c", 0, " ") -> "a"		// element("  a b c", 0, " ") -> "a"  spaces at the beginning are skipped		// element("a b c", 1, " ") -> "b"		// element(" a  b  c", 1, " ") -> "b", though two spaces between "a" and "b"		// skip delimiters at the beginning		i = 0;		while (i < len && line[i] == del1[0])			i++;		for (; idx != -1 && i < len; i++)		{			// skip multiple limiters before wanted sequence starts			while (idx > 0 && line[i] == del1 && i < len-1 && line[i+1] == del1[0])				i++;			// look for delimiters, maybe more in series			if (line[i] == del1[0])				idx--;			else if (idx == 0)			{				if (result.start == 0)					result.start = i;				result.len++;			}		}	}	else	{		// ... with right delimiter		// element("a b c", 0, " ", " ") -> "b"		// element("(a) (b c)", 0, "(", ")") -> "a"		// element("(a) (b c)", 1, "(", ")") -> "b c"		// element("(a) (b c)", 0, " ", ")") -> "(b c"		// element("(a) (b c)", 1, " ", ")") -> "c"		// element("(a) (b c)", 1, "(", "EOL") -> "b c)"		// skip white spaces at the beginning		i = 0;		while (i < len && line[i] == T(" "))			i++;		// seek left delimiter		idx++;			for (; idx != -1 && i < len; i++)		{			// skip multiple limiters before wanted sequence starts			while (idx > 0 && line[i] == del1[0] && i < len-1 && line[i+1] == del1[0])				i++;			if ((idx != 0 && line[i] == del1[0]) ||			    (idx == 0 && line[i] == del2))			{				idx--;			}			else if (idx == 0)			{				// EOL (End Of Line)?				if (del2 == QString("EOL"))				{					// copy until end of line					for (int j = i; j < len; j++)						if (!killblanks || line[j] != T(" "))						{							if (result.start == 0)								result.start = i;							result.len++;						}					// leave loop					idx--;				}				else if (!killblanks || line[i] != T(" "))				{					if (result.start == 0)						result.start = i;					result.len++;				}			}		}	}		return result;}*/template<class T> T Misc<T>::element(const T &line, unsigned int index, const T &del1, const T &del2, bool killblanks) const{	int len = line.length();	int idx = index;	int i;	T sub;	// kill trailing white spaces	while ((int) line[len-1] < 33 && len > 0)		len--;	// right delimiter given?	if (!del2)	{		// ... no right delimiter		// element("a b c", 0, " ") -> "a"		// element("  a b c", 0, " ") -> "a"  spaces at the beginning are skipped		// element("a b c", 1, " ") -> "b"		// element(" a  b  c", 1, " ") -> "b", though two spaces between "a" and "b"		// skip (delimiters) spaces at the beginning		i = 0;//		while (i < len && line[i] == del1)		while (i < len && line[i] == T(" "))			i++;		for (; idx != -1 && i < len; i++)		{			// skip multiple (delimiters) spaces before wanted sequence starts//			while (idx > 0 && line[i] == del1 && i < len-1 && line[i+1] == del1)			while (idx > 0 && line[i] == T(" ") && i < len-1 && line[i+1] == T(" "))				i++;			// look for delimiters, maybe more in series			if (line[i] == del1)				idx--;			else if (idx == 0)				sub += line[i];		}	}	else	{		// ... with right delimiter		// element("a b c", 0, " ", " ") -> "b"		// element("(a) (b c)", 0, "(", ")") -> "a"		// element("(a) (b c)", 1, "(", ")") -> "b c"		// element("(a) (b c)", 0, " ", ")") -> "(b c"		// element("(a) (b c)", 1, " ", ")") -> "c"		// element("(a) (b c)", 1, "(", "EOL") -> "b c)"		// skip spaces at the beginning		i = 0;		while (i < len && line[i] == T(" "))			i++;		// seek left delimiter		idx++;			for (; idx != -1 && i < len; i++)		{			// skip multiple (delimiters) spaces before wanted sequence starts//			while (idx > 0 && line[i] == del1 && i < len-1 && line[i+1] == del1)			while (idx > 0 && line[i] == T(" ") && i < len-1 && line[i+1] == T(" "))				i++;			if ((idx != 0 && line[i] == del1) ||			    (idx == 0 && line[i] == del2))			{				idx--;			}			else if (idx == 0)			{				// EOL (End Of Line)?				if (del2 == QString("EOL"))				{					// copy until end of line					for (int j = i; j < len; j++)						if (!killblanks || line[j] != T(" "))							sub += line[j];					// leave loop					idx--;				}				else if (!killblanks || line[i] != T(" "))					sub += line[i];			}		}	}		return sub;}// some useful functionsQString rkToKey(QString, bool integer=false);#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -