写在前面

这些函数都是我和朋友一点一点写出来的,可能部分代码会有点雷同,但大部分代码都是自我总结出来的。目前包含的函数功能分别是:

1、设置控制台颜色

2、设置控制台光标位置

3、隐藏控制台光标

4、判断质数(也是够无聊的)

5、最小因数

6、快速读入int型

7、快速读入string型

8、判断按键是否按下(可以根据上面的VK值来对号入座,鼠标点击等自行百度)

9、获得两个字符串的最长公共字串

10、说明文档(或许没用?)

上代码!

#include <windows.h>
#include <iostream>
#include <cstdio>
#include <conio.h>
#include <cmath>
#include <sstream> #define VK_0 0x30
#define VK_1 0x31
#define VK_2 0x32
#define VK_3 0x33
#define VK_4 0x34
#define VK_5 0x35
#define VK_6 0x36
#define VK_7 0x37
#define VK_8 0x38
#define VK_9 0x39 //定义数据字符A~Z
#define VK_A 0x41
#define VK_B 0x42
#define VK_C 0x43
#define VK_D 0x44
#define VK_E 0x45
#define VK_F 0x46
#define VK_G 0x47
#define VK_H 0x48
#define VK_I 0x49
#define VK_J 0x4A
#define VK_K 0x4B
#define VK_L 0x4C
#define VK_M 0x4D
#define VK_N 0x4E
#define VK_O 0x4F
#define VK_P 0x50
#define VK_Q 0x51
#define VK_R 0x52
#define VK_S 0x53
#define VK_T 0x54
#define VK_U 0x55
#define VK_V 0x56
#define VK_W 0x57
#define VK_X 0x58
#define VK_Y 0x59
#define VK_Z 0x5A //定义数据字符a~z
#define VK_a 0x61
#define VK_b 0x62
#define VK_c 0x63
#define VK_d 0x64
#define VK_e 0x65
#define VK_f 0x66
#define VK_g 0x67
#define VK_h 0x68
#define VK_i 0x69
#define VK_j 0x6A
#define VK_k 0x6B
#define VK_l 0x6C
#define VK_m 0x6D
#define VK_n 0x6E
#define VK_o 0x6F
#define VK_p 0x70
#define VK_q 0x71
#define VK_r 0x72
#define VK_s 0x73
#define VK_t 0x74
#define VK_u 0x75
#define VK_v 0x76
#define VK_w 0x77
#define VK_x 0x78
#define VK_y 0x79
#define VK_z 0x7A
using namespace std;
/*
制作于2020.6.29
目前版本:1.5
日志:
2020.8.11:1.5 加入键盘侦测函数(就是把傻逼微软的函数写短了一点) ,和获得最长公共子串的函数LongSubstring
2020.8.10:1.4 加入快速读入函数
2020.7.31:1.3 加入Prime和Factor函数
2020.7.27:1.2 重置名字,采用驼峰命名法
2020.6.29:1.0 包含设置color和设置光标位置的函数
*/
namespace tool
{
/*** 设置颜色 ***/
void SetColor(unsigned short ForeColor = ,unsigned short BackGroundColor = )
{
HANDLE hCon=GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hCon,(ForeColor%)|(BackGroundColor%*));
}
/*** 颜色帮助 ***/
void HelpColor()
{
for (int i = ;i <= ;i++)
{
SetColor(i, );
cout << i << endl;
}
}
/*** 设置光标 ***/
int SetPos(int posx, int posy)
{
COORD pos = {posx,posy};
HANDLE hCon = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(hCon, pos);
return ;
}
/*** 隐藏光标 ***/
void Hide()
{
CONSOLE_CURSOR_INFO cursor_info={,};
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info);
}
/*** 判断质数 ***/
bool Prime(unsigned long long s)
{
if (s == )
return true;
if (s % == )
return false;
for (int i = ;i <= sqrt(s) + ;i += )
{
if (s % i == )
return false;
}
return true;
}
/*** 最小因数 ***/
unsigned long long Factor(unsigned long long s)
{
for (int i = ;i <= s;i++)
{
if (s % i == )
return i;
}
}
/*** 快读整数 ***/
inline int IntRead()//内联函数稍微快一点点
{
char ch = getchar();
int s = , w = ;
while(ch < '' || ch > '')
{
if(ch == '-') w = -;
ch = getchar();
}
while(ch >= '' && ch <= '')
{
s = s * + ch - '',
ch = getchar();
}
return s * w;
}
/*** 快读字串 ***/
inline string StringRead(int ch = )
{
string str;
char s = getchar();
while ((ch == && (s == ' ' || s == '\n' || s == '\r')) || (ch == && (s == '\n' || s == '\r')))
{
s = getchar();
}
while ((ch == && s != ' ' && s != '\n' && s != '\r') || (ch == && s != '\n' && s != '\r'))
{
str += s;
s = getchar();
}
return str;
}
/*** 侦测按键 ***/
bool KeyDown(int VK_NOW)
{
return (GetAsyncKeyState(VK_NOW) & 0x8000) ? true : false;
}
/*** 共子串长 ***/
int LongSubstring(string a, string b)
{
int lena = a.length(), lenb = b.length(), ans[lena][lenb], Ans = ;
memset(ans, , sizeof(ans));
for (int i = ;i < lena;i++)
{
for (int j = ;j < lenb;j++)
{
if (a[i] == b[j])
{
ans[i][j] = (i == || j == ? : + ans[i - ][j - ]),
Ans = max(ans[i][j], Ans);
}
}
}
return Ans;
}
/*** 说明文档 ***/
void Help()
{
const int SIZE = ;
const string function[SIZE][] =
{
"SetColor", "用于设置颜色\n格式 SetColor(字体颜色, 背景色)\n常用颜色:0 黑 10 绿 12 红 15 白",
"SetPos", "用于设置光标位置\n格式 SetPos(光标x坐标, 光标y坐标)",
"Hide", "隐藏光标\n格式 Hide()",
"Prime", "判断一个数是不是质数,如果是则返回true,不是返回false\n格式 Prime(数字)",
"Factor", "获得一个正整数除了1以外的最小因数\n格式 Factor(数字)",
"IntRead", "快速读入一个整数\n格式 整数型 = IntRead()",
"StringRead", "快速读入一个string字符串\n格式 字符串 = StringRead(是1就读整行,默认0)",
"KeyDown", "判断按键是否按下,例如KeyDown(VK_s)判断小写s是否按下\n格式 KeyDown(VK值),返回布尔值",
"Similarity", "这个函数用来判断两个字符串最长公共子串\n格式 LongSubstring(字符串1, 字符串2)",
"NONE", "" //请保持在最后
};
cout
<< "tool.h库" << endl<< "查询:(exit退出)" << endl
<< "SetColor" << endl
<< "SetPos" << endl
<< "Hide" << endl
<< "Prime" << endl
<< "Factor" << endl
<< "IntRead" << endl
<< "StringRead" << endl
<< "KeyDown" << endl
<< "LongSubstring" << endl;
string help;
bool X = false;
while ()
{
cin >> help;
if (help == "exit")
return;
else
{
for (int i = ;function[i][] != "NONE" && !X;i++)
{
if (function[i][] == help)
{
cout << function[i][] << endl;
X = true;
}
}
}
if (X == false)
{
int l = , s = ;
for (int i = ;function[i][] != "NONE";i++)
{
int k = LongSubstring(function[i][], help);
//如果更加相似
if (k > l)
{
//记录索引和长度
l = k, s = i;
}
}
cout << "这个函数我们并没有。" << endl;
if (l >= help.length() / ) //如果相似度达50%以上
{
cout << "那么是" << function[s][] << "函数吗?" << endl;
}
}
cout << "还有什么需要的吗?" << endl;
}
}
}

[持续更新]——关于C++的一些可能会常用的函数的更多相关文章

  1. (持续更新)vs2012,2013,2015,2017,2019 常用的插件 与 开发中常用的工具

    这篇博客 持续更新. 小伙伴们可以复制名称,在vs的扩展和更新中去搜索下载 .其他的工具在官网下载

  2. Python常用组件、命令大总结(持续更新)

    Python开发常用组件.命令(干货) 持续更新中-关注公众号"轻松学编程"了解更多. 1.生成6位数字随机验证码 import random import string def ...

  3. git常用命令(持续更新中)

    git常用命令(持续更新中) 本地仓库操作git int                                 初始化本地仓库git add .                       ...

  4. 总结js常用函数和常用技巧(持续更新)

    学习和工作的过程中总结的干货,包括常用函数.常用js技巧.常用正则表达式.git笔记等.为刚接触前端的童鞋们提供一个简单的查询的途径,也以此来缅怀我的前端学习之路. PS:此文档,我会持续更新. Aj ...

  5. 【前端】Util.js-ES6实现的常用100多个javaScript简短函数封装合集(持续更新中)

    Util.js (持续更新中...) 项目地址: https://github.com/dragonir/Util.js 项目描述 Util.js 是对常用函数的封装,方便在实际项目中使用,主要内容包 ...

  6. 【github&&git】4、git常用命令(持续更新中)

    git常用命令(持续更新中) 本地仓库操作git int                                 初始化本地仓库git add .                       ...

  7. Android开发中常用的库总结(持续更新)

    这篇文章用来收集Android开发中常用的库,都是实际使用过的.持续更新... 1.消息提示的小红点 微信,微博消息提示的小红点. 开源库地址:https://github.com/stefanjau ...

  8. python3.4学习笔记(六) 常用快捷键使用技巧,持续更新

    python3.4学习笔记(六) 常用快捷键使用技巧,持续更新 安装IDLE后鼠标右键点击*.py 文件,可以看到Edit with IDLE 选择这个可以直接打开编辑器.IDLE默认不能显示行号,使 ...

  9. iOS:开发常用GitHub开源项目(持续更新)

    IOS开发常用GitHub开源项目(持续更新) 数据类 开源库 作者 简介 AFNetworking Mattt 网络请求库 ASIHTTPRequest pokeb 网络请求库 Alamofire ...

随机推荐

  1. p72_电子邮件

    一.电子邮件格式 信封 abcd@xx.com 内容 2.1 首部(To, Subject)-> (From,To,Subject,Date) 2.2 主体 二.电子邮件组成结构 三.SMTP ...

  2. eclipse导入项目出现红叉

    转载:原博客 导入web项目有红叉时可能是path环境不支持需要配置自己电脑的path,所以需要build path 出现java代码错误或者…jsp文件出错(https://img-blog.csd ...

  3. 【Redis学习专题】- Redis主从+哨兵集群部署

    集群版本: redis-4.0.14 集群节点: 节点角色 IP redis-master 10.100.8.21 redis-slave1 10.100.8.22 redis-slave2 10.1 ...

  4. 微信小程序-点餐系统

    一.前言说明 博客声明:此文链接地址https://www.cnblogs.com/Vrapile/p/13353264.html,请尊重原创,未经允许禁止转载!!! 1. 主要功能 (1)后台定义分 ...

  5. NoSQL数据库-MongoDB 学习(一)

    基本介绍 MongoDB 是为了快速开发互联网 Web 应用而设计的数据库系统 MongoDB 的设计目标是极简.灵活.作为 Web 应用栈的一部分 MongoDB 的数据模型是面向文档的,所谓文档是 ...

  6. Spring Cloud Alibaba教程:Nacos

    Nacos是什么 Nacos 致力于帮助您发现.配置和管理微服务,它 提供了一组简单易用的特性集,帮助您快速实现动态服务发现.服务配置.服务元数据及流量管理. 注册中心 nacos-server 可以 ...

  7. 面试题四十二:连续子数组的最大和,要求时间复杂度为 n

    方法一:举例分析数组的规律,累加数组逐步保存最大值:累加中和<0,则遗弃前面的累加和:重新开始: int FindMaxArray(int [] A) {               if(A= ...

  8. [转]十分钟带你理解Kubernetes核心概念

    本文将会简单介绍 Kubernetes的核心概念.因为这些定义可以在Kubernetes的文档中找到,所以文章也会避免用大段的枯燥的文字介绍.相反,我们会使用一些图表(其中一些是动画)和示例来解释这些 ...

  9. 旧的成功的AndroidManifest.xml

    <?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="htt ...

  10. Lun4R-CyBRICSCTF wp

    WEB Hunt (Web, Baby, 50 pts) 打断点,然后就一个一个被抓住了... 接着F12就出现了.(这个flag是白色的,藏在下面....)... RE Baby Rev 题目给了个 ...