无题
C++数值类型与string的相互转换1、数值类型转换为string【1】使用函数模版+ostringstream使用函数模版将基本数据类型(整形、字符型、实型、布尔型)转换为string
12345678910111213141516// ostringstream对象用来进行格式化输出,常用于将各种类型转换为string类型// ostringstream只支持 << 操作符template<typename T> string toString(const T& t){ ostringstream oss; // 创建一个格式化输出流 oss << t; // 把值传递入流中 return oss.str();}// 实型 -> string:输出14.2cout << toString(14.2) << endl;// 整型 -> string:输出12301cout << toString(12301) << endl;// 长 ...
Python核心拓展
3f1e72eb0712bcfd1c179868292f1bb75a6aad113055e1e2455109c946e7c4b27d7f39dc939314875f0e62b9c5b027234af7cde254134be54c225a10fd3d1da9fc8886cab5ea3a837bd486942f58f6aeb301c6a76868bf87088d9886462e511be5b820eb554e0a624c05ce93cb695a3cce524273b5e80ffa5ed7b561d4223e91d9401b102ed6458272b047a81fd01ba40463dc0683421dc14f0d2b335ff257ae624eefd408a91b2969d254670794cbfbe8f7ef2c274afc75380b5a627e120f5f62c757d3dc2782d16e63aa9caaa4a382c06474f2291b6ced63e2be4edf065c9769b9fb18487ccbc8a7251848338786d2608ee1fd9f49e78ab ...
Python核心要点
a879dd62096f99b7b49ab17e92487923e5201ca7e53fe4a903cac198df348e8908a2a4c9feda29ebb82648720edf2b8b028e433b4391deed11a37e0607dea3daf0df316c4d991c4c1e8968cb01128d679268a7dc063f11a03816f7fd97a0be11b63bdb52258626d8290cbe2fbcf6077e174bf405f4edf8b57260fbe788d8bbfd00e9a89deb76abf490f06bdc005d1e15baf6958e1b3bb28cae246357efa9cf98cc13e998999d63a853d4b463c0b5029c9ecd95e079311c3273729e01fc375bea5f888d5e9d66c2e52ccf6d5350eb0225aa3baca7c5f4af8b09476f318476450709043eb99561d02cb8cdcd97e1a28776da26b29aa0bab62af ...
无题
C++中为什么static成员变量一定要在类外初始化?1、为什么静态成员不能在类内初始化?在C++中,类的静态成员(static member)必须在类内声明,在类外初始化,像下面这样。
1234567class A{private: static int count; // 类内声明}// 类外定义并初始化,不必再加static关键字int A::count = 10;
或者只进行定义但不赋初始值,但是默认值是否是0,可能会与具体的编译器有关。
12// 只进行定义但不赋初始值,默认值视编译器而定int A::count;
为什么?
因为静态成员属于整个类,而不属于某个对象,如果在类内初始化,会导致每个对象都包含该静态成员,这是矛盾的。
如果不增加int A::count = 0;这样的变量定义,那么在编译的时候将会报出:’A::count’未定义的引用错误。这是因为静态成员变量count未定义,也就是还没有分配内存,显然是不可以访问的。
2、什么东西能在类内初始化能在类中初始化的成员只有一种,那就是静态常量成员。
1 ...
无题
linux中chmod a+x的含义u 表示用户g 表示用户组o 表示其它a 表示所有
1234567891011# 给所有用户给予a.txt文件可执行权限chmod a+x a.txt 等价于 chmod +x a.txt# a.txt文件的所有用户可执行权限chmod u+x a.txt# a.txt用户组可执行权限chmod g+x a.txt# a.txt其他用户可执行权限chmod o+x a.txt
无题
python读取相对路径、绝对路径1、文件绝对路径1234# 当前所处文件夹的绝对路径import ospath = os.path.abspath(".")print(path) # D:\babytree\MyTest\common
1234# 当前所处的文件夹上一级文件夹的绝对路径import ospath = os.path.abspath("..")print(path) # D:\babytree\MyTest
1234# 当前文件的绝对路径import ospath = os.path.abspath(__file__)print(path) # D:\babytree\MyTest\common\test11.py
123# 当前文件的绝对路径import sysprint(sys.argv[0]) # D:\babytree\MyTest\common\test7.py
1234# 获取当前文件的所在目录import oscur_dir = os.path.dirname(os.path.abspath(__file__ ...
无题
Python读写TOML文件1、TOML介绍TOML的目标是成为一个极简的配置文件格式。TOML被设计成可以无歧义地被映射为哈希表,从而被多种语言解析。下文是一个比较详细的TOML介绍:https://segmentfault.com/a/1190000000477752
2、Python读写TOMLtoml包是一个为python语言解析toml编写的第三方包,其在pypi上的地址如下:https://pypi.org/project/toml/
123# 安装toml解析包# 也有可能是pip3命令pip install toml
3、函数说明toml包十分简单,解析常用的就是下面四个方法:
12345678910111213141516# 从文件或者一组文件中解析TOML,返回一个字典对象或类的实例对象。# 当解析多个文件时,会按照传入顺序依次解析,后边的文件内包含键# 的值会覆盖之前文件相同键的值"""参数f:文件路径,多个文件路径的列表或者文件描述符_dict:将解析结果填充到一个类中去返回一个字典对象或者 _dict 指定的 ...
无题
python中yield的用法详解1、yield的初步认识首先,如果你还没有对yield有个初步认识,那么你先把yield看作return。这个是最直观的,它首先是个return,普通的return是什么意思,就是在程序中返回某个值,返回之后程序就不再往下运行了。看作return之后再把它看作是一个生成器(generator)的一部分(带yield的函数才是真正的迭代器),接下来我们直接看程序。
1234567891011def foo(): print("starting...") while True: res = yield 4 print("res:", res)g = foo()print(next(g))print("*" * 20)print(next(g))
123456# 代码输出starting...4********************res: None4
直接解释代码运行顺序,相当于代码调试
程序开始执行以后,因为foo()函数中有yield关键字,所以 ...
无题
Ubuntu下libmodbus的应用1、什么是modbus协议?Modbus协议是应用于电子控制器上的一种通用语言。通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以通信。它已经成为一种通用工业标准。有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。此协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通信的。它描述了一个控制器请求访问其它设备的过程,如何回应来自其它设备的请求,以及怎样侦测错误并记录。它制定了消息域格局和内容的公共格式。
当在同一Modbus网络上通信时,此协议决定了每个控制器需要知道它们的设备地址,识别按地址发来的消息,决定要产生何种行动。如果需要回应,控制器将生成反馈信息并用Modbus协议发出。在其它网络上,包含了Modbus协议的消息转换为在此网络上使用的帧或包结构。这种转换也扩展了根据具体的网络解决节地址、路由路径及错误检测的方法。
此协议支持传统的RS-232、RS-422、RS-485和以太网设备。许多工业设备,包括PLC,DCS,智能仪表等都在使用Modbus协议作为他们之间的通信标准。
项目中 ...
无题
运行编译后的程序报错 error while loading shared libraries: lib*.so: cannot open shared object file: No such file or directory1、错误原因错误的原因大概是运行程序的时候,没有找到程序所需要的lib*.so动态库。动态库和静态库的最大区别就是,静态库是静态连接,也就是在产生可执行文件的时候就把静态库中的实现嵌入到程序中了,一旦编译成功,静态库也就有存在的价值了,即便静态库不存在了,可执行程序也是可以跑起来的。但是动态库就不一样了,它是遵循动态链接,也就是说编译的时候需要去指定路径找该so文件链接编译,运行的时候也需要指定相应的路径去找。如果在运行的时候,可执行程序会先去默认的系统lib目录下寻找该so,如果找不到了就报错error while loading shared libraries。(可以通过该文章了解一下动态库的动态加载机制http://blog.csdn.net/dbzhang800/article/details/6918413)
2、动态库的搜索路径搜索的先 ...