1.存储单位转换
1 B(字节) = 8 bit(比特位);
1 KB(千字节) = 2^10 B;
1 MB(兆字节,百万字节) = 2^10 K = 2^20 B;
1 GB(千字节,吉字节,十亿字节) = 2^10 M = 2^20 K = 2^30 B;
1 TB(千字节,万亿字节,太字节) = 2^10 G = 2^20 M = 2^30 K = 2^40 B;
2.将线程id转换为int
static uint32_t getThreadID()
{
std::thread::id tid = std::this_thread::get_id();
return *(uint32_t*)&tid;
}
3.强制远程局域网电脑命令
mstsc /admin /v:192.168.1.158
4.std::string的使用
将数字转换为std::string
std::to_string();
5.std::filesystem(c++17)
使用方法
#include<filesystem>
using namespace std::filesystem;
6.当vs2019 c++标准选择c++17时,并在头文件中包含windows.h,则会提示 错误C2872: ‘byte’:不明确的符号,处理方法为
typedef unsigned char BYTE;
typedef BYTE uint8;
#include <windows.h>
7.使用文件流打开文件,如果存在则打开,则不存在则创建,只有std::ofstream的open有此功能。std::ifstream的open和std::fstream的open都不能在文档不存在的情况下创建文件
std::ofstream file;
file.open(" ");
file.close();
8.作用域是项目内的所有源文件的全局变量的用法(extern的用法)
#test1.h
extern int i_var;//此处的extern是声明i_var是全局变量,i_var的定义在其他地方.此处额外的补充一下,“ extern “C” ”是告诉编译器按照c的方式编译,因为c++编译时会在函数名前面加一些其他的标识的字母.
#test1.cpp
#include "test1.h"
int i_var = 1;//此处是i_var的定义所在,此处不能加static关键字,因为static得作用域在当前文件内,如果加了,则在其他源文件中将会找不到i_var得定义。
#test2.cpp
#include "test1.h"
i_var = 2; //使用全局变量
9.一直在想本来有类(class)了,外什么还需要结构体(struct)。
就我个人的理解做如下记录,暂时想到得就只有这些。欢迎大家指正和添加
1.因为结构体时c原有的数据结构,而类是c++才有的,所以c++为了兼容c,保留了struct
2.就是大家一直说的结构体默认的访问属性是public,而类的属性是private。如果我只是简单的封装一些方法(func),不需要有私有的方法或者成员变量,则使用结构体。用结构体就不必特别强调访问属性,代码看起来简洁明了。反而就用类。如果只是想把一些方法放在一起,可以用名字空间namespace。
3.单纯的定义一些数据结构,本人习惯用结构体,而不用类。结构体不用管访问属性,因为默认的就是public,访问的时候用 结构体名::成员变量名 就可以了,而类呢,如果定义为public还要加public关键字,如果不加的话,是私有成员,访问的时候还得定义函数去访问,显得麻烦累赘。
10.static关键字得作用
是个人使用心得,如果有不对得地方,欢迎大家指正
1.c而言,作用域在文件内,static变量和全局变量(作用域在文件内)得区别待研究
2.c++而言,使用static变量,类得对象公用一份。达到了各个对象之间得沟通。
11.设置文件只读,隐藏,加密等
#include <windows.h>
SetFileAttributes(文件名,FILE_ATTRIBUTE_READONLY|FILE_ATTRIBUTE_HIDDEN);
//设定为只读+隐藏
SetFileAttributes(文件名,FILE_ATTRIBUTE_NORMAL);
//取消所有设定
成功返回1-65536,错误返回0;
12.Windows配置文件读写函数
// 将参数写入系统配置文件(win.ini)中
WriteProfileString
// 将参数写入系统自定义配置文件中
WritePrivateProfileString
// 从系统配置文件中读取参数
GetProfileString
// 从自定义配置文件中读取参数
GetPrivateProfileString
13.调试信息打印
TRACE("%s","...");
STL(Standard Template Library)标准模板库
ATL(Active Template Library)活动模板库,c++针对COM开发的库
15.if的用法
if(a, b)和if(a && b)是等效的