C++学习笔记(C转)
开发工具注释
Visual studio ctrl+k+c(注释) ctrl+k+u(放开注释)
C语言可常用 #if 0 #endif #if 1 #endif
Eclipse(c/c++版)鼠标拉选标记后 ctrl+/(斜线)
const常量 和 指针 *
const * 变量 常量指针, 指针地址可变,指向的值不可变 * const 指针地址不可变,指针指向的值可变
引用&
常见于函数参数,fun(std::string &str) str可在函数内修改,并在函数内修改引用的值,指针需要*str来修改值
得到数组大小
Sizeof(a)/sizeof(a[0])
常用ASCII码
[0xA \n] [0xC \r] [124 |]
Char* 和 string
Char* 以\0结尾,打印只打之前的字符 定长可以用字符数组,不定长使用指针动态分配内存大小
String 本身有长度属性 可以添加\0 同时打印后面的字符串内容
String.c_str() 转换成可读的const char* 多用于格式化字符串打印
键入值
C语言 scanf 需带格式化输入 %s %c %d printf
C++ cin>> cout<<
static_cast 强转变量类型 (不会改变被转换变量的值)
JsonValue1[“***”] = static_cast(double_temp1)
enum 枚举 这样写case常量能够清晰的根据名称 了解代码逻辑 默认0开始
enum Day { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATERDAY, SUNDAY } ;
头文件
可能多次使用导致重复定义,所以需要使用宏定义,#ifndef XXXX
#define XXXX #include “***.h” #endif
格式化输出转换
常用snprintf;字符串转整形,atoi->strtod,atoll->strtoll; 原型long long strtoll(
const char *str, char str_end, int base ); 有些编译器 atoll返回的可能就只是32位bit的 unsigned
int,这时候需要使用strtoll(str,NULL,10)返回转成10进制的long long,如果之后还需要转换成16进制,注意需要使用 %llx来格式化,%x会导致转换后的结果错误
string字符串编码修改
去掉所有换行:str.erase(remove(str.begin(),str.end(),’\n’),str.end());
win10添加共享编译盘路径
R原生字符串
string str2 = "D:\\work\\user\\name";
string str3 = R"(D:\work\user\name)"; //不需要转义字符 \/\r\n
cout << str2 << endl;
cout << str3<< endl;
win10添加共享编译盘路径
文件夹-》邮件属性-》共享-》everyone->共享确定-》网络路径
pc常用工作软件
Eclipse,Vscode,Source Insight(代码ide)Wireshark抓包);postman(批量下发cgi,指令);
Xshell,SecureCRT(系统操作打包)Xftp.tftpd64(文件传输工具)nodepad++,UltraEdit(报文日
志查看)beyond compare(比对工具)
map容器
插入一个 insert(map<type, type>::value_type(key, value)) 元素 值
m.insert(pair<int, int>(1, 10));
删除一个 erase(iterator)
清空 clear()
判空 empty()
查找 find(key)
统计个数 count(key)
从头到尾遍历 begin() 到 end()
使用场景:去重
vector容器 (STL中最常用的容器)
替代 c int[] 刷题很常用
判断是否为空 — empty
返回元素个数 — size
返回容器容量 — capacity
重新指定大小 — resize
尾插 — push_back
尾删 — pop_back
插入 — insert (位置迭代器)
删除 — erase (位置迭代器)
清空 — clear
sort函数
使用此函数需先包含:#include <algorithm>,并且导出命名空间;
sort(first_pointer,first_pointer+n,cmp) 该函数可以给数组,或者链表list、向量排序。
一行即可快速排序,解放双手(相对于C语言)
//例子:
vector<int> a; int b[5];
sort(a.begin(),a.end());sort(b,b+5);
日志查看与挂载抓包
串口方式:设备串口连接电脑 ssh远程 :登录设备终端可查看
远程挂载:mount -t nfs -o nolock,tcp *.*.*.*:/user/ /home
本地挂载:mount -t nfs -o nolock,tcp *.*.*.*:/c/user /home
抓包:ssh登录设备后台 执行./tcpdump -i eth0 -s 0 –w 1.pcap –v
常用设计模式
观察者模式:队列中存放多个观察者,当目标对象修改后,逐一通知观察者们
attach订阅观察者后, 观察者notify发布一条指令, 观察者们都会收到消息(可分别做出不一样的反应处理), 对象使用完后可detach取消订阅
单例模式:类声明一个static静态实例instance,每次处理都使用该实例调用方法,对于只需要单线程的对象类使用,保证唯一性,减少内存开支和系统的性能开销