-
1 std::vector<unsigned char> readFromFile1(const char* filePath) { 2 FILE* file = fopen(filePath, "rb"); 3 std::vector<unsigned char> result; 4 if (file == nullptr) { 5 return result; 6 } 7 8 // 获取文件大小,尽量一次读完 9 size_t fileSize = getFileSize(file); 10 if (fileSize != 0) { 11 result.resize(fileSize); …
Read More -
先放资料: How to use boost::property_tree to load and write JSON How to iterate a boost property tree? 不出现key的方法遍历一个json文件: 1 /* *********************************************** 2Author :111qqz 3mail: renkuanze@sensetime.com 4Created Time :2018年08月17日 星期五 15时29分23秒 5File Name :ptree.cpp …
Read More -
编译某代码,发现报错某函数未定义的引用。该函数的是先前编译得到的动态库中。 先去check了该函数的实现,还有接口与头文件中的声明是否统一。发现没有问题。 然后怀疑.cpp文件没有被编译到,于是在该函数中添加 #pragma message("******************************8") 发现的确被编译到了。 使用nm来查看动态库中的符号表,发现也可以找到这个函数的符号。 于是怀疑编译代码的时候没有链接到该动态库。 于是在make的时候打印详细信息。make VERBOSE=1 发现也的确链接了动态库.... 见鬼了Orz 然后用readelf -s 来查看动态库,惊讶得发现要找的那个符号 …
Read More -
C++11 std::function 是一种通用、多态的函数封装,它的实例可以对任何可 以调用的目标实体进行存储、复制和调用操作 见下面的例子 1 /* *********************************************** 2Author :111qqz 3mail: renkuanze@sensetime.com 4Created Time :2018年07月19日 星期四 17时41分00秒 5File Name :bind.cpp 6************************************************ */ 7 #include <functional>8 …
Read More -
以前用的办法太老土啦 看到一个since C++11的方法,我觉得比较优雅 1 #include <iostream>2 #include <chrono>3 //#include <ratio> 4 #include <thread>5 6 void f() 7 { 8 std::this_thread::sleep_for(std::chrono::seconds(1)); 9 } 10 11 int main() 12 { 13 auto t1 = std::chrono::high_resolution_clock::now(); 14 f(); 15 auto t2 = …
Read More -
用gdb调试c++的时候,需要添加-g编译选项add_compile_options(-g),并且关掉各种编译优化 如果是多线程程序,可以用info threads 查看每个线程的信息 然后用thread [id] 查看指定线程,并用bt查看调用栈。 gdb调试的时候,可以用ctrl+c 停住程序,来查看调用栈,然后按c(continue)继续程序的运行。 emmm 先放一些相关的。 Linux 下如何产生core文件(core dump设置) ulimit -a 查看限制 ulimit -c unlimited 表示这只为不限制core文件大小 用gdb的调试命令如下: gdb ./test core.2065
Read More -
资料推荐这个:MySQL C API programming tutorial 环境为ubuntu 14.04 lts 需要安装mysql 和mysql 开发包 sudo apt-get install libmysqlclient15-dev mysql-server mysql-client 先在mysql 中建立test数据库和test表格 mysql>create database test; mysql>use test; //切换到test数据库中 mysql> create table test(name varchar(255),num int(10) ); //创建一个叫test …
Read More -
迫于拙劣的cpp水平,这次来记录一些关于STL算法部分的内容。 参考内容是CS106L的course reader Iterator Categories Iterators分为以下五种: * Output Iterators:可以使用"++";可以用*myItr = value,不能用value = *myItr * Input Iterators:可以使用"++";可以用value = *myItr,不能用*myItr = value * Forward Iterators: 可以使用"++",可以同时用value = *myItr和*myItr = value * …
Read More -
迫于拙劣的cpp水平,来补补以前忽略掉的cpp细节。 老规矩,先放资料。 参考资料: A Gentle Introduction to C++ IO Streams "Designing and implementing a general input/output facility for a programming language is notoriously difficult" - Bjarne Stroustrup Stream的基本认识 说说我的理解。stream(流)可以看做输入输出的抽象。我们通过流可以忽略掉device的细节,采取同样的输入输出方式。 对于任何原生的cpp类型,都可以用stream来处理。用户自定 …
Read More -
前置技能点: gnu make linux下.so,.a,.o文件 cmake是一个工具,也可以看成一门语言。 学习cmake最大的障碍在于看不懂全是大写的英文 学习cmake主要参考了《cmake practice》 不过感觉作者有些啰嗦...不重要的东西讲了半天,重要的东西却一带而过。。。表述得也不是特别流畅。。。但是还是感谢作者的分享吧orz... cmake的定位是大型项目构建工具。 目前适用于C/C++/JAVA的项目。 可以不需要自己写makefile文件。 既然cmake可以看做一门语言,那么自然就有语法。 下面只是列举一些常用的。不常用的可以用到的时候再去查。这里也会不定期补充。 cmake的语法中,对于变量大小写敏 …
Read More