亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? str.cpp

?? 讀取串口數(shù)據(jù)并畫實時曲線的VC源碼
?? CPP
字號:
#include "stdafx.h" 
#include <stdio.h>
#include <assert.h>
#include <math.h>
#include <stdlib.h>
#include "Str.h"

CStr::CStr(const char* str)
{
	if(str == 0)
	{
		m_nLength = 0;
		m_pString = 0;
	}
	else
	{
		m_nLength = strlen(str);
		m_pString = new char[m_nLength + 1];
		assert(m_pString != 0);
		strcpy(m_pString, str);
	}
}

CStr::CStr(const CStr& str)
{ 
	if(str == 0)
	{
		m_nLength = 0;
		m_pString = 0;
	}
	else
	{
		m_nLength = str.m_nLength; 
		m_pString = new char[m_nLength + 1];
		assert(m_pString != 0);
		strcpy(m_pString, str.m_pString); 
	}
}

CStr& CStr::operator +=(const CStr& str)
{
	m_nLength += str.m_nLength;
	char* pNew = new char[m_nLength + 1];
	assert(pNew != 0);
	strcpy(pNew, m_pString);
	strcat(pNew, str.m_pString);
	delete m_pString;
	m_pString = pNew;

	return *this;
}

CStr& CStr::operator =(const char* str)
{
	if (m_pString) delete m_pString;
	m_nLength = strlen(str);
	m_pString = new char[m_nLength + 1]; 
	assert(m_pString != 0);
	strcpy(m_pString, str);

	return *this;
}

CStr& CStr::operator =(const CStr& str)
{
	assert(str != 0);
	if (m_pString) delete m_pString;
	m_nLength = strlen(str.m_pString);
	m_pString = new char[m_nLength + 1]; 
	assert(m_pString != 0);
	strcpy(m_pString, str.m_pString);

	return *this;
}

void CStr::VarToString(const double var)
{
	char str[32];

	gcvt(var, 16, str);
	m_nLength = strlen(str);
	if (str[m_nLength - 1] == '.')
	{
		str[m_nLength - 1] = '\0';
		m_nLength --;
	}
	m_nLength = strlen(str);
	m_pString = new char[m_nLength + 1];
	assert(m_pString != 0);
	strcpy(m_pString, str);
}

int CStr::Format(const char* format, ...)
{
	assert(format != 0);

	int len;
	char* MaxBuf;
	for(int i = 5; ; i ++)
	{
		len = (int)pow(2, i);
		MaxBuf = new char[len];
		if (!MaxBuf) return 0;
		// some UNIX's do not support vsnprintf and snprintf
		len = _vsnprintf(MaxBuf, len, format, (char*)(&format + 1));
		if (len > 0) break;
		delete []MaxBuf;
		if (len == 0) return 0;
	}

	if (!m_pString)
	{
		m_nLength = len;
		m_pString = new char[m_nLength + 1];
	}
	else if (m_nLength < len)
	{
		delete m_pString;
		m_nLength = len;
		m_pString = new char[m_nLength + 1];
	}
	if (m_pString) 
		strcpy(m_pString, MaxBuf);
	else
		len = 0;
	delete []MaxBuf;

	return len;
}

bool CStr::Match(char* Wildcards, char* str)
{
	bool Yes = 1;

	//iterate and delete '?' and '*' one by one
	while(*Wildcards != '\0' && Yes && *str != '\0')
	{
		if (*Wildcards == '?') str ++;
		else if (*Wildcards == '*')
		{
			Yes = Scan(Wildcards, str);
			Wildcards --;
		}
		else
		{
			Yes = (*Wildcards == *str);
			str ++;
		}
		Wildcards ++;
	}
	while (*Wildcards == '*' && Yes)  Wildcards ++;

	return Yes && *str == '\0' && *Wildcards == '\0';
}

// scan '?' and '*'
bool CStr::Scan(char*& Wildcards, char*& str)
{
	// remove the '?' and '*'
	for(Wildcards ++; *str != '\0' && (*Wildcards == '?' || *Wildcards == '*'); Wildcards ++)
		if (*Wildcards == '?') str ++;
	while ( *Wildcards == '*') Wildcards ++;
	
	// if str is empty and Wildcards has more characters or,
	// Wildcards is empty, return 
	if (*str == '\0' && *Wildcards != '\0') return false;
	if (*str == '\0' && *Wildcards == '\0')	return true; 
	// else search substring
	else
	{
		char* wdsCopy = Wildcards;
		char* strCopy = str;
		bool  Yes     = 1;
		do 
		{
			if (!Match(Wildcards, str))	strCopy ++;
			Wildcards = wdsCopy;
			str		  = strCopy;
			while ((*Wildcards != *str) && (*str != '\0')) str ++;
			wdsCopy = Wildcards;
			strCopy = str;
		}while ((*str != '\0') ? !Match(Wildcards, str) : (Yes = false) != false);

		if (*str == '\0' && *Wildcards == '\0')	return true;

		return Yes;
	}
}

bool CStr::NumericParse(void* pvar, char flag)
{
	assert(m_pString != 0);
	char* pTmpStr = m_pString;

	// remove the leading ' ' and '\t' at the beginning
	while (*pTmpStr == ' ' || *pTmpStr == '\t')
		pTmpStr++;

	// no desired character found
	if (strlen(pTmpStr) == 0)
		return false;

	char a = pTmpStr[0];
	if ((flag == 'b' || flag == 'C' || flag == 'S' || 
		flag == 'I' || flag == 'L') && a == '-')
		return false;

	if (flag == 'b')
	{
		bool var;
		if (strcmp(pTmpStr, "true") == 0 || strcmp(pTmpStr, "1") == 0 ||
			strcmp(pTmpStr, "TRUE") == 0) var = true;
		else if (strcmp(pTmpStr, "false") == 0 || strcmp(pTmpStr, "0") == 0 ||
			strcmp(pTmpStr, "FALSE") == 0) var = false;
		else // failed
			return false;
		memcpy(pvar, &var, sizeof(bool));
		return true;
	}
	else
	{
		double tmpvar = strtod(pTmpStr, (char**)&pTmpStr);
		if (tmpvar == 0.0 && a != '0')
			return false;   // convertion wrong

		if (flag == 'f' || flag == 'd')
		{
			// allow any float value with one 'f' or 'F' terminated
			if (*pTmpStr == 'f' || *pTmpStr == 'F') 
				pTmpStr++;
		}
		else if (flag == 'l' || flag == 'L')
		{
			// allow any float value with one 'l' or 'L terminated
			if (*pTmpStr == 'l' || *pTmpStr == 'L') 
				pTmpStr++;
		}

		switch(flag)
		{
		case 'c':
			{
				//if (tmpvar < -(0xff / 2 + 1) || tmpvar > 0xff / 2)
				if (tmpvar < -128 || tmpvar > 127)
					return false;   // onerflow
				char var = (char)tmpvar;
				memcpy(pvar, &var, sizeof(char));
			}
			break;
		case 's':
			{
				//if (tmpvar < -(0xffff / 2 + 1) || tmpvar > 0xffff / 2)
				if (tmpvar < -32768.0 || tmpvar > 32768.0)
					return false;   // onerflow
				short var = (short)tmpvar;
				memcpy(pvar, &var, sizeof(short));
			}
			break;
		case 'i':
			{
				//if (tmpvar < -(0xffffffff / 2 + 1) || tmpvar > 0xffffffff / 2)
				if (tmpvar < -2147483648.0 || tmpvar > 2147483647.0)
					return false;   // onerflow
				int var = (int)tmpvar;
				memcpy(pvar, &var, sizeof(int));
			}
			break;
		case 'l':
			{
				//if (tmpvar < -(0xffffffff / 2 + 1) || tmpvar > 0xffffffff / 2)
				if (tmpvar < -2147483648.0 || tmpvar > 2147483647.0)
					return false;   // onerflow
				long var = (long)tmpvar;
				memcpy(pvar, &var, sizeof(long));

			}
			break;
		case 'C':
			{
				//if (tmpvar < 0 || tmpvar > 0xff)
				if (tmpvar < 0.0 || tmpvar > 255)
					return false;   // onerflow
				unsigned char var = (unsigned char)tmpvar;
				memcpy(pvar, &var, sizeof(unsigned char));
			}
			break;
		case 'S':
			{
				//if (tmpvar < 0 || tmpvar > 0xffff)
				if (tmpvar < 0.0 || tmpvar > 65535.0)
					return false;   // onerflow
				unsigned short var = (unsigned short)tmpvar;
				memcpy(pvar, &var, sizeof(unsigned short));
			}
			break;
		case 'I':
			{
				//if (tmpvar < 0 || tmpvar > 0xffffffff)
				if (tmpvar < 0.0 || tmpvar > 4294967295.0)
					return false;   // onerflow
				unsigned int var = (unsigned int)tmpvar;
				memcpy(pvar, &var, sizeof(unsigned int));
			}
			break;
		case 'L':
			{
				//if (tmpvar < 0 || tmpvar > 0xffffffff)
				if (tmpvar < 0.0 || tmpvar > 4294967295.0)
					return false;   // onerflow
				unsigned long var = (unsigned long)tmpvar;
				memcpy(pvar, &var, sizeof(unsigned long));
			}
			break;
		case 'f':
			{
				if (tmpvar < -3.402823466e+38 || tmpvar > 3.402823466e+38)
					return false;   // onerflow
				float var = (float)tmpvar;
				memcpy(pvar, &var, sizeof(float));
			}
			break;
		case 'd':
			memcpy(pvar, &tmpvar, sizeof(double));
			break;
		}

		// remove the leading ' ' and '\t' at the end
		while (*pTmpStr == ' ' || *pTmpStr == '\t')
			pTmpStr++;

		if (*pTmpStr != '\0')
			return false;   // non digital character detected

		return true;
	}
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产精品久久久久秋霞影院| 欧美一区二区三区日韩| 国产欧美精品在线观看| 国产成人综合亚洲91猫咪| 久久久久久亚洲综合| 国产 欧美在线| 亚洲女子a中天字幕| 91极品美女在线| 日韩精品一二区| 精品欧美久久久| 成人av在线播放网址| 亚洲色图在线播放| 7878成人国产在线观看| 久久99精品国产.久久久久久| 精品91自产拍在线观看一区| 国产suv精品一区二区883| 亚洲日本一区二区| 欧美精品v日韩精品v韩国精品v| 蜜桃一区二区三区四区| 日本一区二区三区在线不卡| 色综合久久久久综合体| 蜜臀av一区二区在线免费观看| 久久噜噜亚洲综合| 91精彩视频在线观看| 另类专区欧美蜜桃臀第一页| 国产精品国产精品国产专区不蜜| 欧美日韩一区二区三区四区| 国产久卡久卡久卡久卡视频精品| 亚洲欧洲三级电影| 欧美一区欧美二区| 风间由美一区二区三区在线观看| 亚洲老妇xxxxxx| 久久亚洲一区二区三区明星换脸 | 欧美亚洲动漫另类| 久久99国产精品久久| 亚洲欧美另类在线| 日韩欧美亚洲国产精品字幕久久久| 成人精品高清在线| 三级久久三级久久| 亚洲色图制服丝袜| www亚洲一区| 欧美嫩在线观看| av在线不卡网| 狠狠色综合色综合网络| 一区二区三区在线视频观看58| 精品成a人在线观看| 欧美亚洲丝袜传媒另类| 成人免费毛片高清视频| 久久精品国产久精国产爱| 一区二区三区在线视频免费观看| 午夜欧美电影在线观看| 国产欧美精品一区二区色综合| 7777精品伊人久久久大香线蕉最新版| 粉嫩av一区二区三区在线播放 | 一区二区视频在线| 久久一留热品黄| 欧美一区二区三区免费在线看| 色婷婷久久综合| 成人动漫av在线| 国产在线精品免费av| 免费观看成人av| 亚洲成人第一页| 一区二区三区在线高清| 中文字幕在线观看一区二区| 国产色一区二区| 欧美精品一区二区蜜臀亚洲| 日韩视频一区二区三区 | 性久久久久久久| 亚洲制服欧美中文字幕中文字幕| 国产精品美女久久久久久久久| 久久久久成人黄色影片| 久久先锋影音av鲁色资源 | 久久久久久久综合| 欧美成人官网二区| 欧美成人伊人久久综合网| 欧美一区二视频| 日韩免费看的电影| 欧美va亚洲va香蕉在线| 欧美大片在线观看| 欧美成人三级在线| 精品福利在线导航| 久久久久9999亚洲精品| 久久久五月婷婷| 国产日韩欧美高清在线| 国产女人水真多18毛片18精品视频 | 亚洲国产视频a| 天堂精品中文字幕在线| 日本不卡123| 久久激情综合网| 国产91丝袜在线播放0| 波多野洁衣一区| 91电影在线观看| 欧美久久高跟鞋激| 精品久久人人做人人爰| 久久久久久久久久看片| 国产精品美日韩| 亚洲综合一二区| 天涯成人国产亚洲精品一区av| 日韩av成人高清| 国产九九视频一区二区三区| 波多野结衣一区二区三区 | 久久精品一区二区三区不卡牛牛 | 色88888久久久久久影院野外| 欧美日韩中文一区| 日韩欧美二区三区| 国产欧美精品区一区二区三区| 亚洲欧洲精品一区二区三区不卡| 亚洲韩国一区二区三区| 蜜臀久久久久久久| 成人亚洲精品久久久久软件| 在线观看91视频| 精品久久久久久亚洲综合网| 中文字幕免费在线观看视频一区| 日韩理论片网站| 奇米在线7777在线精品| 成人av在线一区二区| 欧美人妖巨大在线| 欧美国产综合色视频| 夜夜嗨av一区二区三区网页| 久国产精品韩国三级视频| 成人福利在线看| 欧美一区二区三区免费观看视频 | 欧美精品一区二区在线播放| 国产精品久久久久久久久快鸭 | **性色生活片久久毛片| 热久久久久久久| 91麻豆国产精品久久| 精品国产麻豆免费人成网站| 一区二区三国产精华液| 国产精品一区二区男女羞羞无遮挡| 色综合网站在线| 久久看人人爽人人| 手机精品视频在线观看| 91在线看国产| 欧美激情一区二区三区不卡| 日韩成人精品在线观看| 91福利区一区二区三区| 国产日产欧产精品推荐色 | 精品视频1区2区3区| 欧美激情一区二区| 蜜桃精品视频在线观看| 欧美系列在线观看| 中文子幕无线码一区tr| 蜜臀av一区二区在线观看| 日本韩国一区二区| 国产精品久久久爽爽爽麻豆色哟哟 | 欧美一区二区三区不卡| 亚洲日本丝袜连裤袜办公室| 国产精品18久久久久久久久| 欧美一区二区三区免费大片| 亚洲一区电影777| 色婷婷久久99综合精品jk白丝 | 欧美国产亚洲另类动漫| 老司机免费视频一区二区三区| 在线精品视频小说1| 国产精品灌醉下药二区| 国产高清精品在线| 2024国产精品视频| 免费成人在线播放| 欧美一区二区三区四区五区| 亚洲成人午夜电影| 欧美自拍偷拍一区| 亚洲品质自拍视频| 91在线观看污| 中文字幕日本乱码精品影院| 成人午夜免费电影| 国产精品久久久久四虎| 国产成人亚洲综合a∨婷婷图片| 2023国产精品| 风间由美性色一区二区三区| 久久久亚洲精品一区二区三区| 久久精品国产久精国产| 精品少妇一区二区三区 | 亚洲一区在线视频观看| 91麻豆福利精品推荐| 亚洲精品五月天| 欧洲亚洲精品在线| 亚洲超碰精品一区二区| 91精品久久久久久久99蜜桃| 奇米精品一区二区三区四区| 日韩美一区二区三区| 国产精品综合一区二区| 国产午夜亚洲精品不卡| 成人黄色a**站在线观看| 亚洲欧美在线视频| 91丨九色丨黑人外教| 亚洲小说春色综合另类电影| 欧美日韩高清一区二区不卡| 日本va欧美va欧美va精品| 777午夜精品免费视频| 国模无码大尺度一区二区三区| 久久久噜噜噜久久人人看| 波多野结衣亚洲一区| 一区二区三区欧美视频| 欧美日韩国产色站一区二区三区| 美女精品自拍一二三四| 欧美激情在线一区二区| 欧美在线free| 久久se精品一区二区| 国产精品的网站|