首页 > 其他分享 >HeaderFile 2.0 | tool.h

HeaderFile 2.0 | tool.h

时间:2024-11-03 17:19:36浏览次数:1  
标签:const string tool HeaderFile 参数 time 字符串 2.0 定义

Download

字符串处理部分

substr()

定义(一) const string substr(const string &x,string expr="")

引自 python 的字符串切片功能

传入的两个参数,第一个参数为被切片的字符串,第二个参数为限定参数

  • 当限定参数为空时返回原字符串
  • 第一参数:返回的子串的开始位置,为空或为 \(0\) 则从头开始
  • 第二参数:返回的字串的结束位置(遵循左开右闭原则),为空或为 \(0\) 则为结束位置
  • 第三参数:步长,步长为 \(x\) 表示每隔 \(x\) 个字符取一个字符
  • 三个参数之间可以以 ; , . / : 作分隔符

负数行为

  • 对于一、二参数,如果传入负数 \(x\) 则定位到 “倒数第 \(x\) 位”
  • 对于第三参数,如果传入负数则逆转字符串

报错行为 (RE - hdk::tool::bad_expression())

  • 对于传入超过三个参数的行为报错
  • 对于下标越界报错

实例

const string x="huge is the big big";
cout<<substr(x,"3")<<endl;   //ge is the big big
cout<<substr(x,"-5")<<endl;   //g big
cout<<substr(x,"2:7")<<endl;   //uge i
cout<<substr(x,":7")<<endl;   //huge i
cout<<substr(x,"0,7")<<endl;   //huge i
cout<<substr(x,"0:")<<endl;   //huge is the big big
cout<<substr(x,"::2")<<endl;   //hg stebgbg
cout<<substr(x,"//-1")<<endl;   //gib gib eht si eguh
cout<<substr(x,"0 4 -1")<<endl;   //eguh
//cout<<substr(x,":::")<<endl;  //报错

定义(二) const string substr(const string &x,int opt0=0,int opt1=0,int opt2=0)

传入的三个数字相当于定义(一)的三个参数

定义(三)const string substr(const string &x,int start_pos,int length)

相当于 x.substr((start_pos,length)

class str_t

可以传入一个静态字符串来切片

str_t str("huge");
cout<<str["0 3"]; //hug
cout<<str("0 0 -1"); //eguh
cout<<str(0,0,-1); //eguh
cout<<str({0,0,-1}); //eguh

lowercase/uppercase

定义 const string lowercase(const string&x)/const string uppercase(const string&x)

转换字符串中的大小写字母

string x="Ab:6";
cout<<lowercase(x);//ab:6
cout<<uppercase(x);//AB:6

该函数适配 std::string,对于 hdk_string 的适配详见 (defination.h) hdk::__reflection_t

class string_hash

自动字符串哈希

定义 class string_hash<typename return_value_type=unsigned long long,return_value_type numer=233,return_value_type mod=0>

return_value_type 哈希返回值类型

numer 进制

mod 模数,mod=0 则不取模

定义后可以使用 () 直接调用哈希

文件内已经用默认参数定义了一个哈希方法 strhash

string_hash<int,23,10007>h;
cout<<h("CTHoi");   //8268
cout<<strhash("CTHoi");   //198535278991

to_string()

定义 std::string to_string(T x)

将数字转为字符串形式

to_number()

定义 long long to_number(std::string x)

将字符串转为数字形式

cout<<to_string(114514);   //"114514"
cout<<to_number("1919810");  //1919810

to_bit()

定义 std::string to_bit(T x)

将数字转为字符串形式的二进制

将字符串转为字符串形式的二进制详见 (bitset.h) hdk::bitset

cout<<to_bit(4); //"100"

fixed_size()

定义 std::string fixed_size(std::string x,int size,char fillchar='0')

将字符串高位补齐为固定位数并返回

size 补齐到的位数

fillchar 填充字符

__int128 适配函数部分

floor_sqrt()

定义 T floor_sqrt(T x,T l=1,T r=-1)

对给定的 \(x\) 开根后向下取整

在不限制后两个参数的情况下,复杂度为 \(\log x\)

基于二分答案实现,你可以通过传入第二个和第三个参数来限定二分答案的上界或下界,复杂度也会随之改变

__int128 x=12;
cout<<floor_sqrt(x);     //3
cout<<floor_sqrt(x,3,5); //3

print()

定义 void print(T x,bool first=true)

输出数字,复杂度为 \(\log_{10} x\)

将 first 改为 false 可以让 x=0 时不输出

__int128 x=12;
print(12);

文件处理部分

copyfile

定义 bool copyfile(const char*in,const char *out)

将 in 文件复制到 out

复制成功将会返回 true

printfile

定义 bool printfile(const char*in)

将 in 文件输出到 stdout

输出成功将会返回 true

fc()

定义 fc(const char *file_A,const char *file_B,bool display=false,bool debug_mode=false)

比较文本,不相同则返回 true

display 显示比较结果

debug_mode 显示详细比较信息

file_name()

定义 string file_name(const string file)

去除 file 的后缀名并返回

cout<<filename("cth.txt");  //cth
cout<<filename("cth");  //cth

时间函数

时间函数都定义在 class _time 中,如需使用请调用定义

_time::sleep(clocks)

相当于 Sleep(clocks)

_time::record_time()

定义(一) long long record_time()

第一次调用记录当前时间,第二次调用返回距离上次调用的时刻差,并重置

定义(二) _time::record_time(bool is_start)

is_start=true 记录当前时间,并覆盖之前记录的时间

is_start=false 返回与记录时间的时间差

predefined

定义:time_ms / time_s,可以当单位使用

_time s;
cout<<s.record_time(); //0
s.sleep(1 time_s);  //休眠一秒
s.sleep(2000 time_ms);  //休眠 2000 毫秒
cout<<s.record_time()/clocks_per_sec; //3
cout<<s.record_time();  //0

标签:const,string,tool,HeaderFile,参数,time,字符串,2.0,定义
From: https://www.cnblogs.com/HaneDaCafe/p/18523603

相关文章

  • Ubuntu 22.04 镜像源仓库
    1.先备份cp/etc/apt/sources.listcp/etc/apt/sources.list.bak2.配置文件gedit/etc/apt/sources.list3.替换文本#aliyundebhttp://mirrors.aliyun.com/ubuntu/lunarmainrestricteduniversemultiversedeb-srchttp://mirrors.aliyun.com/ubuntu/lunarmainrest......
  • 继承和多态2.0
    1.1多态定义具体点就是去完成某个行为,当不同的对象去完成时会产生出不同的状态。1.2多态实现条件1.必须在继承体系下2.子类必须要对父类中方法进行重写3.通过父类的引用调用重写的方法多态体现:在代码运行时,当传递不同类对象时,会调用对应类中的方法publicclas......
  • uniapp - 运行打包出现警告报错The legacy JS API is deprecated and will be removed
    问题描述在uniapp项目运行打包时警告提示ThelegacyJSAPIisdeprecatedandwillberemovedinDartSass2.0.0,另外还有可能存在其他sass错误或报错警告,uniapp正常运行项目也可能会提示此错误,无论是Hbuilder升级还是降级都不行(还有更坑的是就是升级完hbuilder才报的),详......
  • H7-TOOL的LUA小程序教程第17期:扩展驱动AD7606, ADS1256,MCP3421, 8路继电器和5路DS18B2
    LUA脚本的好处是用户可以根据自己注册的一批API(当前TOOL已经提供了几百个函数供大家使用),实现各种小程序,不再限制Flash里面已经下载的程序,就跟手机安装APP差不多,所以在H7-TOOL里面被广泛使用,支持在线调试运行,支持离线运行。TOOL的LUA教程争取做到大家可以无痛调用各种功能函数,不需......
  • 【semantic Kernel】Semantic Kernel Tools(VS Code插件)
    2023年4月13日,Microsoft发布了一个SemanticKernel的VSCode插件,SemanticKernelTools,用于进行SemanticFunction的开发和调试工作。SemanticKernelTools的安装只需要VSCode即可,不需要额外的其他的环境。在VSCode的扩展中搜索SemanticKernelTools,点击Install即......
  • HDK Fileheader Download(2.0)
    HDKFileheaderLibraryDownload2.0Download1.13|1.13.1|1.13.2|1.13.3|1.13.4Download1.12|1.12.1|1.12.2Download1.11Download1.10|1.10.1Download1.9Download1.8|ForLinuxDownload1.7|1.7.1|1.7.2Download1.6Download1.5Downloa......
  • Ubuntu22.04安装HOJ流程
    一、docker安装1、更新Ubuntu打开终端,依次运行下列命令:sudoaptupdatesudoaptupgradesudoaptfull-upgrade2、添加Docker库首先,安装必要的证书并允许apt包管理器使用以下命令通过HTTPS使用存储库:sudoaptinstallapt-transport-httpsca-certificatescurlso......
  • 虚拟机扩容ubuntu22.04磁盘空间到逻辑卷中。
    在现有磁盘基础上直接扩容的。一开始部署的时候,设置的是40GB。现在已经使用30多GB了。需要扩容下。打开虚拟机设置把磁盘扩展到一定大小root@branch-dev:~#df-hFilesystemSizeUsedAvailUse%Mountedontmpfs3.2G2.2M......
  • 介绍使用@reduxjs/toolkit工具包发送异步请求最简便的方式
     1、安装@reduxjs/toolkit工具包pnpmi @reduxjs/toolkitreact-redux2、在src文件夹下新建store文件夹3、在store文件夹下新建index.js文件作为store的入口文件,其次再新建homeReducer.js文件4、homeReducer.js文件中写入以下代码//从@reduxjs/toolkit库中导入crea......
  • CAN Specification 2.0 PART B -- CAN message 定义(1)
    记录BOSCHCANSpecification2.0PARTBCAN协议标准学习过程,以备需要时查看;BOSCHCANSpecification2.0 文档获取:http://esd.cs.ucr.edu/webres/can20.pdfCANmessage定义1.DATAFRAME数据帧DATAFRAME由StartofFrame,ArbitrationField,ControlField,Da......