CodeLite是一款免费、开源、跨平台的 IDE,专门用于 C、C++、PHP 和 JavaScript(主要用于使用 Node.js 的后端开发人员)编程语言,在所有主要平台(Windows、macOS 和 Linux)上运行最佳。
可以从下载页面 下载适用于 Windows、macOS 和 Linux 的预构建二进制文件。
下载地址:https://downloads.codelite.org/ Continue reading
CodeLite是一款免费、开源、跨平台的 IDE,专门用于 C、C++、PHP 和 JavaScript(主要用于使用 Node.js 的后端开发人员)编程语言,在所有主要平台(Windows、macOS 和 Linux)上运行最佳。
可以从下载页面 下载适用于 Windows、macOS 和 Linux 的预构建二进制文件。
下载地址:https://downloads.codelite.org/ Continue reading
下载工具之 Free Download Manager(FDM)
FDM 名副其实就是IDM 的免费版了。
毕竟是免费的软件,但也只是比IDM 稍微逊色一点。
它支持FTP,HTTP(S),还有BT 下载,当然你也可以添加代理。
同时你还可以定时下载任务,也支持多线程下载,同时还可以查看多线程的进度。
它还支持远程控制下载,还支持断点续传功能。
同时还支持国外视频网站下载,支持浏览器插件,自动捕捉可下载文件,右键即可下载。
同时支持Win 和Mac 版。同时支持中文。 Continue reading
PoEdit的msgunfmt可执行文件可以对.mo文件进行反编译的。
1、先下载PoEdit(https://poedit.net/)
2、假如PoEdit安装到D盘的a文件夹下,则打开cmd,cmd进入到.mo文件所在的目录,输入
0 |
D:\a\Poedit\GettextTools\bin\msgunfmt.exe ./zh_CN.mo -o ./zh_CN.po |
3、生成的.po文件,再使用PoEdit软件(或者用其它文本编码器打开查看)打开即可。
4、如果要使用命令行把编辑好的.po文件编译成.mo文件,命令格式如下:
0 |
D:\a\Poedit\GettextTools\bin\msgfmt.exe ./zh_CN.po -o ./zh_CN.mo |
很长时间都不用迅雷了,万不得以的时候会用一下,但是前段时间一气之下就把它给卸载了,真是不想用它了,广告太多太多了,夹带也是太多太多了,一不留神就不一定把什么给偷偷安装上。
一直也在寻找一款正经的下载工具,绿色下载工具,以前也用过一个国外的下载工具,只是用着用着就要收费,也记不清是什么名字了。
今天要在国外一个网站下载一个exe安装包,我一般都是用浏览器自带的工具下载,但是火狐这个下载不支持断点续传,下载速度慢(这应该是源站限速了),提示需要1个多小时,但是也等得起,只是中途会自动中止,重启下载后还是从头下载。不得不想想办法了,找个下载工具。
于是,找到了Motrix,在网上看,评价还不错。
Motrix 支持下载HTTP,FTP,BitTorrent,Magnet等。Motrix使用aria2作为内核,下载速度非常快。 Continue reading
Code::Blocks 是一款免费的 C/C++ 和 Fortran IDE,旨在满足用户最苛刻的需求。它被设计为非常可扩展和完全可配置的。
围绕插件框架构建,Code::Blocks 可以使用插件进行扩展。可以通过安装/编码插件来添加任何类型的功能。例如,事件编译和调试功能由插件提供。 Continue reading
C++交差调用、C++互相引用
其实变通一下,也可以实现功能,但是我这个人就是这么犟,哈哈。
这个项目是一个机器人自动购买耐克鞋系统(也可以说是一个自动抢鞋系统),需要把某网站的一个JS文件内容用C++改写过来。改写需要尽量的保持原貌,并且适应的添加周边方法,所以我才这么犟。
改写建了两个类(其它类就不说了),Document 类和 Window 类,没有继承关系,但是要把 Document 实例装载到 Window 实例中,而且 Document 实例还有某一方法需要通过 Window 指针来访问其某些属性,这就交差了。
通过在网上查找,了解了一些理论,又通过编译报错,一点点修改,最终实现了C++交差调用、C++互相引用,特此记录: Continue reading
c++正则匹配HTML标签input实例,c++实例
文件demo.html
0 1 2 3 4 5 6 7 8 9 10 11 12 |
...... <!--这里设置一个重复的 id ,并且有一对单引号--> <input type="hidden" value="hk" id='888' id='languageId' /> <input type="hidden" value=" " id="topNavPreviewId" /> <form action="transfers.htm" autocomplete="off" method="get" id="searchForm"> <input class="gnav-bar-search-input" name="keyword" id="keyword" placeholder="搜索" autocomplete="off" autocorrect="off" required=""> <button type="button" class="gnav-bar-search-clear fa fa-times"></button> </form> <input type="hidden" id="productName" value="Air Jordan XXXV CNY PF"> <input type="hidden" id="productLabel" value="男子籃球鞋"> ...... |
c++数据类型的宽度和取值范围
int类型比较特殊,具体的字节数同机器字长和编译器有关。如果要保证移植性,尽量使用用__int16、__int32或__int64。
__int16、__int32这种数据类型在所有平台下都分配相同的字节。所以在移植上不存在问题。
所谓的不可移植是指:在一个平台上编写的代码无法在另一个平台上运行,不能达到期望的运行结果。
例如:在32位平台上(所谓32位平台是指通用寄存器的数据宽度是32)编写代码,int 类型分配4个字节,而在16位平台int类型则分配2个字节。那么在16位上编译出来的exe,其中是为int分配2字节,而在32位平台上运行时,会按照4个字节来解析,显然会出错误的!
而对于非int类型,目前为止,所有的类型分配的字节数都是兼容的,即不同平台对于同一个类型分配相同的字节数!
建议:如果欲编写跨平台程序,或交叉编译的程序时,在代码中尽量避免使用int类型,根据不同的需要可以用short,long,unsigned int 等来代替。
64位指的是cpu通用寄存器的数据宽度是64位的。
下面是各个类型一览表: Continue reading
c++ 浮点数精确度控制,sprintf()
0 1 2 3 4 5 |
char buf[100]; int a = 10; sprintf(buf, "%.2f", double(a)); // 精度 2 double b = 123.4561; sprintf(buf, "%.2f", b); // 精度 2 sprintf(buf, "%.3f", b); // 精度 3 |
gmp随机数实例,gmp生成随机数
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
#include <iostream> #include <cstring> #include <ctime> #include <gmpxx.h> int main() { clock_t time = clock(); gmp_randstate_t grt; gmp_randinit_default(grt); // 初始化随机数变量 gmp_randseed_ui(grt, time); // 种子赋值 mpz_t key; mpz_init(key); // 初始化整数 // 生成0到 (2^n)-1(含)范围内的均匀分布的随机整数 。 mpz_urandomb(key, grt, 16); gmp_printf("-- 16 bit:\t%Zd\n", key); // 释放占用的内存空间 gmp_randclear(grt); mpz_clear(key); /** * 输出: -- 16 bit: 23086 */ } |
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
#include <iostream> #include <cstring> #include <ctime> #include <gmpxx.h> int main() { // 有时为正整数,有时为负整数 mpz_class ran; gmp_randclass rr(gmp_randinit_default); rr.seed(std::time(nullptr)); ran = rr.get_z_bits(125); long int _random = ran.get_ui(); printf("-- 125 bit:\t%d\n", _random); ran = rr.get_z_bits(256); _random = ran.get_ui(); printf("-- 256 bit:\t%d\n", _random); ran = rr.get_z_bits(512); _random = ran.get_ui(); printf("-- 512 bit:\t%d\n", _random); ran = rr.get_z_bits(1024); _random = ran.get_ui(); printf("-- 1024 bit:\t%d\n", _random); /** * 输出: -- 125 bit: 1227284511 -- 256 bit: -840074903 -- 512 bit: -1613957681 -- 1024 bit: 1234011535 */ } |