吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2760|回复: 2
收起左侧

[C&C++ 原创] 【原创源码】 自己写的常用VC函数

[复制链接]
liyisker 发表于 2017-1-15 21:58
头文件和函数声明:
[C++] 纯文本查看 复制代码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

// 去除头尾的空白字符, 返回一个C风格字符串指针
// 注: 不创建新的buffer,不作内存拷贝和移动
// 如果长空为零,则返回NULL
char* AfTrim(char* src);

// 输入一个字符串, 存到output里(左右的空白字符会被自动去掉)
char* AfGetString(char* output);

// 获取一个整数, 如果输入为空则返回默认值defValue
int AfGetInt(int defValue);

// 获取一个小数, 如果输入为空则返回默认值defValue
double AfGetDouble(double defValue);

// 获取单字符输入, 如果输入为空则返回默认值defValue
char AfGetChar(char defValue);

// 获取bool型输入, 如果输入为空则返回默认值defValue
bool AfGetBool(bool defValue);


函数体:
[C++] 纯文本查看 复制代码
// 去除头尾的空白字符, 返回一个C风格字符串指针
// 注: 不创建新的buffer,不作内存拷贝和移动
// 如果长空为零,则返回NULL
char* AfTrim(char* src)
{
	char* pStart = NULL;
	char* pEnd = NULL;
	char* p;
	
	// 从第1个字符开始扫描
	for(p=src ; *p != '\0'; p ++ )
	{
		if(*p == ' ' || *p == '\t' || *p== '\n')
			;	
		else
		{
			pStart = p; // 开头
			break;
		}
	}
	// 全部为空白字符
	if(pStart == NULL) 
	{
		*src = '\0';
		return src ;
	}
	// 继续扫描
	bool nonBlank = true;
	for( ; ; p ++ ) 
	{
		if(*p == ' ' || *p == '\t' || *p== '\n' ||*p=='\0')
		{
			if(nonBlank)
			{
				pEnd = p;
				nonBlank = false;
			}
			if(*p == '\0') break;
		}
		else
		{
			nonBlank = true;
		}
	}

	// 截断末尾的空白
	*pEnd = '\0'; 

	// 有效长度为0,返回空指针
	if(pEnd == pStart) return NULL;

	return pStart; 
}

// 输入一个字符串, 返回接收到的长度
char* AfGetString(char* output)
{
	char buf[512];
	gets(buf);
	char* str = AfTrim(buf);
	if(str == NULL) 
		return NULL;
	else
	{
		strcpy(output, str);
		return output;
	}
}

// 获取一个整数
int AfGetInt(int defValue)
{
	char buf[128];
	char* str = AfGetString(buf);
	if(str == NULL)
		return defValue;
	else
		return atoi(str);
}

// 获取一个小数
double AfGetDouble(double defValue)
{
	char buf[128];
	char* str = AfGetString(buf);
	if(str == NULL)
		return defValue;
	else
		return atof(str);
}

// 获取单字符输入
char AfGetChar(char defValue)
{
	char buf[128];
	char* str = AfGetString(buf);
	if(str == NULL)
		return defValue;
	else
		return str[0];
}

// 获取bool型输入
bool AfGetBool(bool defValue)
{
	char buf[128];
	char* str = AfGetString(buf);
	if(str == NULL)
		return defValue;
	else
	{
		if(strcmp(str, "YES") == 0
			|| strcmp(str, "yes") == 0
			|| strcmp(str, "1") == 0
			|| strcmp(str, "true") == 0
			|| strcmp(str, "TRUE") == 0)
			return true;
		return false;
	}
}


使用试例:
[C++] 纯文本查看 复制代码
struct User
{
	int id;
	char name[128];
	char phone[32];
	bool vip;
};

int main()
{
	User u;
	u.id = AfGetInt(0);
	AfGetString(u.name);
	AfGetString(u.phone);
	u.vip = AfGetBool(true);

	system("pause");  
	return 0;
}

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
我村狠出名 + 1 + 1 热心回复!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

xouou 发表于 2017-1-15 22:26
好吧 支持一下,  感觉纯纯的
killyouiii 发表于 2017-1-15 22:42
虚无空幻 发表于 2017-1-15 22:47
楼主新手,而且不会超过18岁.
建议楼主认为自己有能力了,不妨写个字符串的处理类实用些.
使用string来写,实现正则的一些功能.
基础点的,如csv识别,文本提取等等.然后再不停的优化.很练手
ttjwk 发表于 2017-1-16 08:54
有点少,多搞一点
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-15 08:50

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表