
C-C++
文章平均质量分 50
SSS_369
毅力,每日至少一篇。
展开
-
C++:未定义引用静态类成员?
先来看代码:#include <iostream>#include <vector>using namespace std;class Foo {public: static const int MEMBER = 1;};int main(){ vector<int> v; v.push_back( Foo::...原创 2019-08-24 14:33:54 · 4044 阅读 · 0 评论 -
C:左移 和右移 的用法
1. 左移<< 左移就是把一个数的二进制所有位都向左移动若干位,实质是这个数乘以2的x次幂,就如:3*2^5= 3*32 = 96;3的2进制是000...0011,左移2位之后变成 000...1100,所以说左移1位相当于乘以2,那么左移n位就是乘以2的n次方了;【注】:int类型最左端的符号位和移位移出去的情况.我们知道,int是有符号的整形数,最左端...原创 2019-02-16 23:53:00 · 1667 阅读 · 0 评论 -
C++:动态库的创建与调用——def文件
动态库的创建有两种方法:不使用.def的方法 和 使用.def的方法;示例:写个简单的动态库,里面有两个函数,能实现加法减法s1: 创建一个空动态库dll, 新建头文件sss.h, 在头文件中写入如下代码s2: 再创建源文件sss.cpp, 如下:s3: 新建模块定义文件Source.def,写入如下内容;s4: 生成动态库DLL;【注】:在.def...原创 2019-02-16 22:01:16 · 11279 阅读 · 0 评论 -
C++:string 操作
string str="";string abc="abcdefg";1. 将字符串abc的元素逐一赋值给另一字符串strs+=a[i];2. 将字符串abc完全赋值给新字符串strstr.assign(abc);3. 将字符串abc的一部分赋值给新的字符串strstart是截取字符串的首位置,len是截取字符串的长度s.substr(start,...原创 2019-01-08 23:33:33 · 1959 阅读 · 0 评论 -
C++:从完整路径中提取文件名、不带后缀的名字、后缀名
目的:从完整路径中提取文件名、不带后缀的名字、后缀名如下:#include <iostream> #include <string> using namespace std;void main(){ string path = "C:\\Users\\Administrator\\Desktop\\text\\data.22.txt"; //1....原创 2019-05-05 22:46:07 · 15966 阅读 · 0 评论 -
C++:int && string的相互转换
目的:string 与 int 相互转换一. int转string方法1. to_string()C++11标准增加了全局函数std::to_string:string to_string (int val);string to_string (long val);string to_string (long long val);string to_string (u...原创 2019-01-07 22:39:46 · 201 阅读 · 0 评论 -
C++:reinterpret_cast 应用
概念reinterpret_cast是C++里的强制类型转换符;reinterpret_cast<type-id> (expression)type-id 必须是一个指针、引用、算术类型、函数指针或者成员指针。作用:它可以把一个指针转换成一个整数,也可以把一个整数转换成一个指针(先把一个指针转换成一个整数,再把该整数转换成原类型的指针,还可以得到原先的指针值)。 in...原创 2018-12-21 20:33:57 · 1773 阅读 · 0 评论 -
C++:“\”字符的意思
用法\是行连续的意思,就是下一行是接着上一行的意思,就是下一行和上一行从语法上来说是一行,只是分成了多行来写。示例#include<stdio.h>#include<stdlib.h>#define STRING "Hello\world\I love U\n"int main(){ printf(STRING);}运行结果:Hel...原创 2018-12-21 18:59:37 · 3611 阅读 · 0 评论 -
C++:char[] & string 的相互转换
常识1.char [ ] ==》string直接赋值;#include<iostream>#include<string>using namespace std;int main(){ string str; char c[] = "123"; str = c; cout << str << endl; cou...原创 2018-12-03 18:43:19 · 557 阅读 · 0 评论 -
C: malloc()和free()的用法
先看程序1. 概念:void *malloc(long NumBytes):该函数分配了NumBytes个字节,并返回了指向这块内存的指针。如果分配失败,则返回一个空指针(NULL)。void free(void *FirstByte): 该函数是将之前用malloc分配的空间还给程序或者是操作系统,也就是释放了这块内存,让它重新得到自由。2. 用法: ...原创 2019-02-17 22:22:37 · 191 阅读 · 0 评论 -
C++:vector 删除符合条件的元素
【注】:C++ vector中实际删除元素使用的是容器vecrot中std::vector::erase()方法。C++ 中std::remove()并不删除元素,因为容器的size()没有变化,只是元素的替换。1. std::vector::erase()iterator erase (iterator position); //删除指定元素iterator erase (...原创 2019-02-25 23:25:39 · 1682 阅读 · 0 评论 -
C++:vector的begin()& end()&front()&back()&find()
1.begin函数函数原型:iterator begin();const_iterator begin();功能:返回一个当前vector容器中起始元素的迭代器。2.end函数函数原型:iterator end();const_iterator end();功能:返回一个当前vector容器中末尾元素的迭代器。3.front函数函数原型:refere...原创 2019-08-24 13:45:38 · 962 阅读 · 0 评论 -
C++:try catch语句用法
C++中try catch语句用法有非常灵活,有许多种组合;这里简单介绍以下最基本的用法;1. 格式try{...}catch{...}try语句块是用来判断是否有异常;catch语句块捕捉异常,并进行处理;throw是抛出异常;2. 看示例首先通过一个简单的例子来熟悉C++ 的 try/catch/throw(可根据单步调试来熟悉,try catch ...原创 2019-06-15 20:34:22 · 50090 阅读 · 7 评论 -
C++:static修饰符的作用
1. static的作用变量分局部变量和全局变量,static修饰变量可将其分为静态全局变量、非静态全局变量、静态局部变量、非静态局部变量; static作用是更改变量的存储方式和作用域;1.1 静态全局变量 vs 非静态全局变量静态全局变量和非静态全局变量都是静态存储方式,存储方式相同;静态全局变量和非静态全局变量的作用域不同,静态全局变量只在该变量的源文件内有效;非静...原创 2019-05-15 21:15:15 · 908 阅读 · 0 评论 -
C++:a++ vs ++a
1. a++ 意味着使用a的当前值计算表达式,然后将a的值加1;2. ++a意味着先将a的当前值加1,然后用新值计算表达式;#include <iostream>using namespace std;int main(){ int a = 10; cout << "(a++)= " << (a++) << endl; cout...原创 2019-05-19 10:40:01 · 380 阅读 · 0 评论 -
Windows:SetTimer定时器编程
摘要:什么时候我们需要用到SetTimer函数呢?当你需要每隔一段时间执行一件事的的时候就需要使用SetTimer函数。使用定时器的方法比较简单,通常告诉WINDOWS一个时间间隔,然后WINDOWS以此时间间隔周期性触发程序。通常有两种方法来实现:发送WM_TIMER消息和调用应用程序定义的回调函数。Settimer是设置一个计时器并开始执行计时器Ontimer中的代码,Ontim...原创 2019-04-14 10:44:52 · 5110 阅读 · 0 评论 -
C++:thread多线程及编程实现
概念:多线程是实现并发或并行的一种手段,并行是指两个或多个独立的操作同时进行,并发是在一个时间段内执行多个操作。在单核时代,多个线程是并发的,在一个时间段内轮流执行;而在多核时代,多个线程可以实现真正的并行,在多核上真正独立的并行执行。例如现在常见的4核4线程可以并行4个线程;4核8线程则使用了超线程技术,把一个物理核模拟为2个逻辑核心,可以并行8个线程。线程调用:每个进程至...原创 2019-04-08 23:50:31 · 587 阅读 · 0 评论 -
C++:vector 排序
vector内存元素排序方式:#include <opencv2/opencv.hpp>#include <iostream>#pragma comment(lib,"opencv_world341.lib")using namespace cv;using namespace std;int main(){ vector<Point2f>...原创 2019-04-02 22:59:35 · 2203 阅读 · 0 评论 -
C++:vector 六种创建和初始化方法
本篇文章介绍vector的六种创建和初始化方法(1)vector<int> list1;默认初始化,最常用此时,vector为空, size为0,表明容器中没有元素,而且 capacity 也返回 0,意味着还没有分配内存空间。这种初始化方式适用于元素个数未知,需要在程序中动态添加的情况。(2)vector<int> list2(list);vector...原创 2019-03-08 23:52:56 · 19990 阅读 · 0 评论 -
C++:wchar_t* & string相互转换
什么是?char*和string字符串中的字符都是一个字符占一个字节的;wchar_t* 宽字符,大部分字符都以一个字符占固定长度的字节 (2字节) 储存;【注】:一个中文通常占用2个字节,当需要处理中文时,可以首先将string转换成char*,然后将char*转换成wchar_t*即可。怎么做?在window环境中,可以利用MultiByteToWideChar();...原创 2018-12-03 13:43:25 · 10721 阅读 · 0 评论 -
OpenCV:remap()简单重映射
学习自:【OpenCV入门教程之十七】OpenCV重映射重映射,就是把一幅图像中某位置的像素放置到另一个图片指定位置的过程。为了完成映射过程, 我们需要获得一些插值为非整数像素的坐标,因为源图像与目标图像的像素坐标不是一一对应的。一般情况下,我们通过重映射来表达每个像素的位置 (x,y), 像这样 : g(x,y) = f ( h(x,y) ) 在这里, g( ) 是目标图像, f转载 2016-10-31 15:58:20 · 26447 阅读 · 9 评论 -
OpenCV:resize()重新调整图像大小
OpenCV中,resize函数用的比较多。C++: void resize(InputArray src, //输入 OutputArray dst,//输出 Size dsize, //输出图像的大小 double fx=0, double fy=0, //fx、fy是沿x轴和y轴的缩放系数原创 2016-10-31 15:08:17 · 21189 阅读 · 0 评论 -
C++:stringstream
学习自:std::stringstream用法 - 使用stringstream对象来进行数据类型转换;#include "stdafx.h"#include <string>#include <sstream>#include <iostream>/*********************************************************************转载 2016-10-30 21:16:14 · 310 阅读 · 0 评论 -
OpenCV:YAML vs XML格式文件的读写操作
参考文章:Opencv YAML和XML格式文件操作详解YAML格式的文件拓展名包括:.yml 和 .yaml;XML格式的文件拓展名为: .xml;在OpenCV中,使用FileStorage进行文件读写。XML文件操作与YAML一样,不过存在一些细小差别。// write file保存数据cv::FileStorage fs(fileName,cv::FileStorage::WRIT原创 2016-10-30 15:13:20 · 626 阅读 · 0 评论 -
C++ if语句如何怎样退出?
今天写程序,遇到个小问题:怎样只退出if语句,而不退出while,for等循环语句呢?sum=0;Count=0;Number=10;while(Count{ ....... if() { sum=Count+sum; Count++; } else原创 2016-10-27 17:33:48 · 23738 阅读 · 0 评论 -
OpenCV+MFC 显示图像
一、新建TEST7项目 二、配置OpenCV链接库,下载并添加CvvImage.h和CvvImage.cpp文件 原因:opencv2.x以上版本已经不支持CvvImage类,而MFC picture控件使用的是Image*类,不支持Mat; 三、插入控件:button、picture type属性:Frame:显示一个无填充的矩形框Rectangle:显示一个填原创 2016-10-14 10:14:30 · 606 阅读 · 0 评论 -
MFC相关知识(二)
模态对话框和非模态对话框:模态对话框是这样的对话框,当它弹出后,本应用程序其他窗口将不再接受用户输入,只有该对话框响应用户输入,在对它进行相应操作退出后,其他窗口才能继续与用户交互。非模态对话框则是,它弹出后,本程序其他窗口仍能响应用户输入。非模态对话框一般用来显示提示信息等。模态对话框是怎样弹出的?CTESTApp类下InitInstance()函数:` CTEST1Dlg dl原创 2016-10-14 18:31:04 · 531 阅读 · 0 评论 -
VS常见错误
IntelliSense: #error 指令: Please use the /MD switch for _AFXDLL builds;这是一个VS2010的BUG。不用管它,不影响使用。修改设置:工程(Project)-> 属性(Properties)-> 配置属性(Configuration Properties)-> c/c++-> 代码生成(Code Generation)->运行库原创 2016-10-14 17:19:50 · 355 阅读 · 0 评论 -
VS常见错误: general error c101008a: Failed to save the updated manifest to the file”
今天在编译程序时,出现了这个错误。 上网查了一下,找到了它的解决办法。 解决的方法:点class view类视图中的工程,选右鍵,再点clean清理就可以了; 或者是 build->clean solusion。原创 2016-10-24 21:57:41 · 642 阅读 · 0 评论 -
Arduino—电机控制
直流电机是指能将直流电能转换成机械能的机械设备。 因其良好的调速性能而在电力拖动中得到广泛应用。 功能:实现电机1和电机2循环正转1秒,然后反转1秒;#define motor1pin 4#define motor1pwm 5#define motor2pin 7#define motor2pwm 6void setup(){}void loop(){ motor(motor原创 2016-10-24 15:11:19 · 4853 阅读 · 1 评论 -
Arduino—舵机控制
舵机是一种位置伺服的驱动器,主要是由外壳、电路板、无核心马达、齿轮与位置检测器所构成。 工作原理是由接收机或者单片机发出信号给舵机,其内部有一个基准电路,产生周期为20ms,宽度为1.5ms 的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。经由电路板上的IC 判断转动方向,再驱动无核心马达开始转动,透过减速齿轮将动力传至摆臂,同时由位置检测器送回信号,判断是否已经到达定位。适用原创 2016-10-22 19:53:23 · 34900 阅读 · 6 评论 -
C++: this指针的用法,相关知识点
1. this指针只能在类的成员函数中调用,表示当前对象的地址;void data::set_month(int mn){ month = mm; this->month = mn; (*this).month = mn;//三者等价}2. this指针只能在类的成员函数中使用,全局函数和静态函数都不能使用this; 实际上,类的成员函数默认的...原创 2018-11-04 00:15:03 · 240 阅读 · 0 评论 -
extern "C"的功能和用法研究
上述代码段中:__cplusplus是一个C++规范规定的预定义宏;现代C++编译器都预先定义了它,而所有的C语言编译器则不会;【注】:按照规范__cplusplus的值应该等于199711L,然而并不是所有的编译器都照此规范,比如g++编译器下__cplusplus的值为1。上述代码段,如果再C编译器下...原创 2018-11-14 18:19:00 · 1948 阅读 · 0 评论 -
C++:reinterpret_cast 标准转换运算符
reinterpret_cast <new_type> (expression)作用:被用来处理无关类型之间的转换;它会产生一个新的值,这个值会有与原始参数(expressoin)有完全相同的比特位。reinterpret_cast 应该在什么地方用来作为转换运算符:从指针类型到一个足够大的整数类型 从整数类型或者枚举类型到指针类型 从一个指向函数的指针到另一个不同...原创 2019-04-27 11:25:51 · 557 阅读 · 0 评论 -
C++:getenv & setenv -- 获取&设置系统环境变量
1. getenv:取得环境变量内容头文件- #include<stdlib.h>格式: char * getenv(const char *name);意义: getenv()用来取得参数name环境变量的内容。@param name为环境变量的名称,如果该变量存在则会返回指向该内容的指针。环境变量的格式为name=value。return 执行成功则返回指向该内容的指针,找...原创 2018-12-01 13:19:14 · 27851 阅读 · 2 评论 -
C++:ceil() & floor() & round() 四舍五入
常识:1. ceil(x)---返回不小于x的最小整数值2. floor(x)---返回不大于x的最大整数值3. round(x)---返回x的四舍五入整数值示例:用ceil()和floor()写一个五舍六入的函数//五舍六入inline long Round_fun(double X) { double a; a = X - (floor(X)); //不大于...原创 2018-12-01 12:50:54 · 521 阅读 · 0 评论 -
C++:对结构体中字符数组赋值时,出现表达式必须是可修改的左值的问题
问题描述: 在C++中为结构体中的字符数组赋值时,出现”表达式必须是可修改的左值“的错误提醒,编译报错“不可指定数据类型”。 问题分析: 结构体中定义的数组:char brand[20],使用 t->brand="adc"是无法进行赋值的。因为brand是字符数组名,而“adc”字符串常量,字符数组名不无法修改的! ...转载 2018-11-26 23:56:18 · 6655 阅读 · 2 评论 -
C:char 数组赋值
定义一个数组char a[10];怎么给这个数组赋值呢?1. 定义的时候直接用字符串赋值char a[10]="hello"; 正确【注】:不能先定义再给它赋值,如char a[10]; a[10]="hello"; 这样是错误的!2. 对数组中字符逐个赋值char a[10]={'h','e','l','l','o'};3. 利用strcpychar a[10]; strcp...原创 2018-11-26 20:51:15 · 7271 阅读 · 0 评论 -
C:char 数组长度计算
字符素组长度是计算‘\0’,还是不计算'\0';char chs[7] = {'a', 'c', '0', 'z', '3','d'}; -----长度为6char chs[7] = {'a', 'c', '0', 'z', '3','d', '/0'}; ------长度为6char chs[] = {'a', 'c', '0', 'z', '3','d', '/0' }; ----...原创 2018-11-26 20:40:05 · 31806 阅读 · 0 评论 -
C++:txt文件的读取、写入操作研究
一. 读取txt文件的内容 (1)逐行读入void readTxt(string file){ ifstream in_file; in_file.open(file.data()); //将文件流对...原创 2018-11-26 20:24:03 · 934 阅读 · 0 评论