![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
SunnyFish-ty
学习学习再学习!
展开
-
Qt string与QString之间的转换
string str;QString qstr;//从QString 到 std::stringstr = qstr.toStdString();//从std::string 到QStringqstr = QString::fromStdString(str);---------------------------------------------------转载 2017-11-06 13:18:00 · 672 阅读 · 0 评论 -
QString与char*的相互转换
在进行编程时,我们经常需要用到字符串这种类型,毫无疑问,Qt 库中也对字符串类型进行了封装,QString 类提供了你能想到的所有字符串操作方法,给开发者带来了极大方便。 但是我们在编写程序时,不可避免地会在 Qt 框架上使用第三方的开源库,由于库的类型基本上都是标准的类型,即使用 char * 来表示字符串类型。那么问题来了,QString 和 char * 之间如何进行转换呢?转载 2017-12-13 11:48:41 · 155956 阅读 · 11 评论 -
Qt中中文字符 一劳永逸的解决方法
QT中中文字符问题,有没有一劳永逸的解决方法?目前遇到有以下问题1、字符串中有中文时,编译提示“常量中含有换行符”2、在控制台窗口输出中文时无法正常显示,中文全部显示为?目前第一个问题通过记事本打开文件,再保存,可解决第二个问题尝试有以下方法,未解决a. "编辑"菜单--->"Select Encoding"---> "UTF-8"或者"System"b. "工具"转载 2017-12-13 13:20:07 · 523 阅读 · 0 评论 -
QVariant,QMap<QString,QVariant>的使用方法
这里首先记录一下QVariant的一点使用注意事项,后续内容再加 QMap map; int a=1; QImage m_showImg; map.insert("Img",m_showImg); map.insert("ImgType",a); void func(QString v)//v是传入的参数,可以是上面的ma原创 2017-12-14 13:46:56 · 9560 阅读 · 0 评论 -
QT QMap介绍与使用
Qt中的QMap介绍与使用,在坛子里逛了一圈,发现在使用QMap中,出现过很多的问题,Map是一个很有用的数据结构。它以“键-值”的形式保存数据。在使用的时候,通过提供字符标示(键)即可得到想要的数据。这个“数据”即可以是一个字符串,也可以是任意对象,当然也包括自己定义的类对象。说明:map是以值传递的形式保存数据的。1. 基本应用下面以“键-值”都是QString的例子说明Q转载 2017-12-06 16:08:04 · 10688 阅读 · 2 评论 -
QT限制QTextBrowser/QTextEdit最大行数
QTextBrowser->document->setMaximumBlockCount (100);QTextEdit->document()->rowCount();用document()这个函数获取QTextDocument对象后,还可以获取其他更多的功能,比如限制edit的行数,setMaximumBlockCount(int)等。ui.text原创 2017-12-16 19:54:46 · 9741 阅读 · 2 评论 -
QT中的智能指针
本篇文章介绍的是Qt智能指针使用指南 帮助篇,Qt提供了很多智能指针的类,比较常见的有QPointer, QSharedDataPointer ,QSharedPointer,QWeakPointer和QScopedPointer等等,它们被引入的Qt版本即描述如下:QPointer (4.0) 已经过时,可以被QWeakPointer所替代,它不是线程安全的。QSharedDat原创 2017-12-18 14:40:45 · 923 阅读 · 0 评论 -
C++中虚函数的作用
虚函数的作用:通过以下两个程序来进行解释!可以让成员函数操作一般化,用基类的指针指向不同的派生类的对象时, 基类指针调用其虚成员函数,则会调用其真正指向对象的成员函数, 而不是基类中定义的成员函数(只要派生类改写了该成员函数)。 若不是虚函数,则不管基类指针指向的哪个派生类对象,调用时都 会调用基类中定义的那个函数。程序1:#include using转载 2018-01-12 09:38:32 · 479 阅读 · 1 评论 -
C++中const、volatile、mutable的用法
const修饰普通变量和指针const修饰变量,一般有两种写法:const TYPE value;TYPE const value;这两种写法在本质上是一样的。它的含义是:const修饰的类型为TYPE的变量value是不可变的。对于一个非指针的类型TYPE,无论怎么写,都是一个含义,即value值不可变。 例如:const int nValue; //nValue是转载 2018-01-13 12:10:14 · 116 阅读 · 0 评论 -
C++中的Lambda表达式详解
我是搞C++的一直都在提醒自己,我是搞C++的;但是当C++11出来这么长时间了,我却没有跟着队伍走,发现很对不起自己的身份,也还好,发现自己也有段时间没有写C++代码了。今天看到了C++中的Lambda表达式,虽然用过C#的,但是C++的,一直没有用,也不知道怎么用,就可怜的连Lambda语法都看不懂。好了,这里就对C++中的Lambda进行一个简单的总结,就算是对自己的一个交代,我是搞转载 2017-12-04 18:46:54 · 189 阅读 · 0 评论 -
QVariant类学习
详细描述:QVariant类作为一个最为普遍的Qt数据类型的联合。因为c++禁止没有构造函数和析构函数的联合体,许多继承的Qt类不能够在联合体当中使用。(联合体当中的变量共用一个存储区),没有了联合变量,我们在物体属性以及数据库的工作等方面受到很多的困扰。一个QVariant对象在一个时间内只保留一种类型的值。我们可以使用canConvert来查询是否能够转换当前的类型。转转载 2017-12-04 15:16:59 · 263 阅读 · 0 评论 -
Qt中QString和int,char等相互转换
网上找了半天,全是QString转int和char等的,就没有int转QString的,但是还是找到啦,我来整合一下哦~Qt中 int ,float ,double转换为QString有两种方法1.使用QString::number();如:[cpp] view plain copy转载 2017-11-10 15:04:43 · 3572 阅读 · 0 评论 -
extern作用详解
extern 作用1:声明外部变量现代编译器一般采用按文件编译的方式,因此在编译时,各个文件中定义的全局变量是互相透明的,也就是说,在编译时,全局变量的可见域限制在文件内部。例1:创建一个工程,里面含有A.cpp和B.cpp两个简单的C++源文件://A.cpp:int iRI;int main(){//.....}//B.cppint iR转载 2017-12-08 15:51:47 · 462 阅读 · 0 评论 -
C++中前置声明的使用
在编写C++程序的时候,偶尔需要用到前置声明(Forward declaration)。下面的程序中,带注释的那行就是类B的前置说明。这是必须的,因为类A中用到了类B,而类B的声明出现在类A的后面。如果没有类B的前置说明,下面的程序将不同通过编译,编译器将会给出类似“缺少类型说明符”这样的出错提示。代码一:// ForwardDeclaration.h#include原创 2017-12-08 22:15:36 · 426 阅读 · 0 评论 -
C++中三中继承区别
C++中的三种继承public,protected,private三种访问权限public:可以被任意实体访问protected:只允许子类及本类的成员函数访问private:只允许本类的成员函数访问 三种继承方式public 继承protect 继承private 继承 组合结果基类中 继承方式 子类中public & public继承原创 2017-12-08 22:32:48 · 397 阅读 · 0 评论 -
马尔可夫和马尔可夫链简介
1 马尔可夫个人简介安德烈·马尔可夫,俄罗斯人,物理-数学博士,圣彼得堡科学院院士,彼得堡数学学派的代表人物,以数论和概率论方面的工作著称,他的主要著作有《概率演算》等。1878年,荣获金质奖章,1905年被授予功勋教授称号。马尔可夫是彼得堡数学学派的代表人物。以数论和概率论方面的工作著称。他的主要著作有《概率演算》等。在数论方面,他研究了连分数和二次不定式理论 ,解决了许多难题 。在转载 2017-11-17 08:29:31 · 2814 阅读 · 0 评论 -
Opencv3.0中Mat与IplImage的转换
Opencv3.0中Mat与IplImage的转换最近做图像,使用了Opencv3.0。因为涉及了蛋疼的混合编程,所以Mat 和 IplImage的转换是必不可少的。让人无语的是从网上查的IplImage转Mat的方法根本不能用。于是我不得不扒了一下Opencv3.0的原文档,上面这么说:Partial yet very common cases of th转载 2017-11-09 09:43:59 · 305 阅读 · 0 评论 -
OpenCV中矩阵类详解之一:Mat
综述Mat类可以被看做是opencv中C++版本的矩阵类,替代原来C版本的矩阵结构体CvMat和图像结构体IplImage;Mat最大的优势跟STL的兼容性很好,有很多类似于STL的操作。但是Mat远远强于后者;Mat是一种高效的数据类型,它对内存进行动态的管理,不需要之前用户手动的管理内存。Mat类定义Mat类定义于core.h转载 2017-11-17 10:12:33 · 1255 阅读 · 0 评论 -
C++中的智能指针
一、简介由于 C++ 语言没有自动内存回收机制,程序员每次 new 出来的内存都要手动 delete。程序员忘记delete,流程太复杂,最终导致没有 delete,异常导致程序过早退出,没有执行 delete 的情况并不罕见。用智能指针便可以有效缓解这类问题,本文主要讲解参见的智能指针的用法。包括:std::auto_ptr、,boost::scoped_ptr、boost::share转载 2017-12-10 13:42:40 · 381 阅读 · 0 评论 -
析构函数报错
析构函数在什么时候被调用执行? 对于C++程序员来说,这个问题比较简单,但是比较爱唠叨的阿愚还是建议应该在此再提一提,也算回顾一下C++的知识,而且这将对后面的讨论和理解由一定帮助。先看一个简单的示例吧!如下:class MyTest_Base{public:virtual ~ MyTest_Base () {cout }};void ma转载 2017-12-20 13:53:23 · 2103 阅读 · 0 评论 -
第一个cuda程序详解
CUDA是一个基于NVIDIA GPU的并行计算平台和编程模型,通过调用CUDA提供的API,可以开发高性能的并行程序。CUDA安装好之后,会自动配置好VS编译环境,按照UCDA模板新建一个工程“Hello CUDA”:建好之后,发现该工程下已经存在一个项目 kernel.cu。这个是CUDA编程的入门示例,实现的功能是两个整型数组相加,代码如下:转载 2018-01-14 19:33:59 · 2655 阅读 · 0 评论 -
如何使用QMessageBox(用法举例)
如何使用QMessageBox(用法举例)QMessageBox是Qt编程中常用的类,使用方便。下面给出该类的普通用法实例,希望对你有所帮助。1.包含头文件[cpp] view plain copy#include 如果要打印出内容,还有添加头文件2.程序转载 2018-01-08 14:01:20 · 1404 阅读 · 0 评论 -
C/C++中传递数组参数的问题
将数组作为参数进行传递 有两种传递方法,一种是function(int a[]); 另一种是function(int *a)这两种两种方法在函数中对数组参数的修改都会影响到实参本身的值!对于第一种,根据之前所学,形参是实参的一份拷贝,是局部变量。但是数组是个例外,因为数组的数据太多了,将其一一赋值既麻烦又浪费空间,所以数组作为参数传递给函数的只是数组首元素的地址,数据还是在内存里的,函数在需要用到...原创 2018-05-31 14:50:52 · 958 阅读 · 0 评论 -
C++如何把数字转为枚举类型
一种方法使用swicth语句,string getElemTypeName(ElemType type){ switch(type) { case ElemType::CAP : return "CAP";break; case ElemType::IND : return "IND";break; case ElemType::VS : r...原创 2018-06-01 09:12:41 · 4133 阅读 · 2 评论 -
补一下基础:.h .lib .dll三者关系
.h头文件 .lib动态链接库文件 .dll 动态链接库附加依赖项的是.lib 不是.dll 若生成了DLL ,则肯定也生成 LIB文件 如果要完成源代码的编译和链接,有头文件和lib就够了。如果也使动态连接的程序运行起来,有dll就够了。在开发和调试阶段,当然最好都有。.h .lib .dll三者的关系是:H文件 作用是:声明函数接口 DLL文件 作用是: 函数...原创 2018-07-25 09:36:24 · 549 阅读 · 0 评论 -
解决 warning C4305:“初始化”:从“double”到“float”截断的问题
出现警告:warning C4305:“初始化”:从“double”到“float”截断(warning C4305: 'initializing' : truncation from 'const double' to 'float')。原因:在 C 语言中,如果不指定数据类型,那么小数常量会被认为是 double 类型的。 如:float x;x = 1.2;其中 x 是 floa...转载 2018-07-25 09:56:22 · 5783 阅读 · 0 评论 -
warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
VS项目经常会出现 warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失 的警告,虽然不影响程序的正常运行,但是我们还是要学会消除这个问题:网上的方法很多是如下4种:(1)转换Code文件为Unicode格式; (2)在Project -> Properties -> Configurat...转载 2018-07-25 09:58:11 · 7557 阅读 · 1 评论 -
char*,const char*和string的相互转换
1. string转const char*string s = "abc";const char* c_s = s.c_str();2. const char*转string直接赋值即可const char* c_s = "abc";string s(c_s);3. string转char*string s = "abc";char* c;const int...转载 2018-08-09 09:50:40 · 5925 阅读 · 0 评论 -
C++:在堆上创建对象,还是在栈上?
C++:在堆上创建对象,还是在栈上?这篇文章来自于一次讨论:http://www.devbean.net/2013/01/qt-study-road-2-model-view/#comment-17532。关于究竟是在堆上还是在栈上创建对象,可能很多初学者感到迷惑。我想可以把这部分内容拿出来详细介绍一下。现在,假设你已经清楚什么是堆,什么是栈。如果需要在堆上创建对象,要么使用new运算符,...转载 2018-08-16 08:58:10 · 932 阅读 · 0 评论 -
Qt创建文件和文件夹的副本(QFile::copy)
[cpp] view plain copy//拷贝文件: bool MyTest007::copyFileToPath(QString sourceDir ,QString toDir, bool coverFileIfExist) { toDir.replace("\\","/"); if (sourceDir == toDir){ return tru...转载 2018-05-28 16:37:55 · 2298 阅读 · 0 评论 -
Qt浅谈之一:内存泄漏(总结)
一、简介 Qt内存管理机制:Qt 在内部能够维护对象的层次结构。对于可视元素,这种层次结构就是子组件与父组件的关系;对于非可视元素,则是一个对象与另一个对象的从属关系。在 Qt 中,在 Qt 中,删除父对象会将其子对象一起删除。C++中delete 和 new 必须配对使用(一 一对应):delete少了,则内存泄露,多了麻烦更大。Qt中使用了new却很少delete,因为QObject的类及其继...转载 2018-03-22 09:54:37 · 727 阅读 · 0 评论 -
C++标准转换运算符static_cast
static_cast <new_type> (expression)虽然const_cast是用来去除变量的const限定,但是static_cast却不是用来去除变量的static引用。其实这是很容易理解的,static决定的是一个变量的作用域和生命周期,比如:在一个文件中将变量定义为static,则说明这个变量只能在本Package中使用;在方法中定义一个static变量,该变量...转载 2018-03-22 09:51:04 · 199 阅读 · 0 评论 -
C++ const用法 尽可能使用const
C++ const 允许指定一个语义约束,编译器会强制实施这个约束,允许程序员告诉编译器某值是保持不变的。如果在编程中确实有某个值保持不变,就应该明确使用const,这样可以获得编译器的帮助。1.const 修饰成员变量 1 #include 2 using namespace std; 3 int main(){ 4 int a1=3; ///non-co转载 2018-01-17 09:50:31 · 176 阅读 · 0 评论 -
“无法解析的外部符号”产生的几种原因
之前写代码时一直有遇到过这种问题:无法解析的外部符号"XXX::XXXX",该符号在函数"XXX::XXXX" 中被引用......其大部分都是由于1.只声明了函数但并没有实现它。这种一般都是大意忘记了,第一次编译就会发现。另外声明了静态变量,没有初始化它也会导致这样的情况发生。2.声明了函数也定义了函数但其函数参数对不上。比原创 2018-01-17 13:55:31 · 8479 阅读 · 0 评论 -
Qt中signals的使用注意
如果继承自QObeject,并且需要用到信号槽的类写在.h头文件中,那么在类中写signals: void sendSignal();后,不需要在该头文件中添加 #include "moc_文件名.h" ,不是不需要,是因为在头文件中编译器会自动添加该头文件,其作用是对Qt信号槽的signals:中定义的函数进行实现,我们只进行了定义,而为实现,如果不实现是无法编译通过的。但是如果继承原创 2018-01-09 09:18:15 · 10840 阅读 · 0 评论 -
const vector<> :: iterator 和 vector<>::const_iterator的区别
话说这两个区别非常大,但是不太好理解啊,而且感觉解释也是各种绕口。说一下我自己的理解吧。 const迭代器,顾名思义,就是不能改变的迭代器,是常量,其性质是由const决定的。比如说我们这样定义一个const迭代器。[cpp] view plain copyvectorint> vv(10,9); const vectorint> :: iterator iter = vv.begin()原创 2018-01-18 09:47:42 · 772 阅读 · 0 评论 -
NULL,nullptr的区别与联系
1)在c语言中NULL代表空指针。例如:int *i = NULL;#define NULL ((void*)0) 意思是NULL是void*指针,给int *i 赋值的时候隐式转换为相应类型的指针,但是如果换成c++编译器编译的时候会出错,以为c++是强类型的,void* 不能隐式转换为其他类型。一般的NULL定义的头文件为:/* Define NULL pointer value */#i转载 2018-01-18 17:47:42 · 1181 阅读 · 0 评论 -
不能将“this”指针从“const XXX”转为“XXX &”
错误说明解决方法 出现上述错误的原因是在const成员函数中调用了非const成员函数,因此只要将所调用的函数都改成const函数转载 2018-01-19 11:41:54 · 5527 阅读 · 0 评论 -
Qt中QString与char*转换
在进行编程时,我们经常需要用到字符串这种类型,毫无疑问,Qt 库中也对字符串类型进行了封装,QString 类提供了你能想到的所有字符串操作方法,给开发者带来了极大方便。 但是我们在编写程序时,不可避免地会在 Qt 框架上使用第三方的开源库,由于库的类型基本上都是标准的类型,即使用 char * 来表示字符串类型。那么问题来了,QString 和 char * 之间如何进行转换呢? 下面分...原创 2018-03-01 10:24:39 · 1700 阅读 · 0 评论 -
生成动态库改名问题
DLL工程,Debug版本下输出文件由basetool.dll basetool.lib 改为basetoolD.dll basetoold.lib 需设置:1、配置属性-常规-目标文件名 $(ProjectName) 加d2、配置属性-连接器-常规-输出问件 由 加d3、配置属性-连接器-高级-导入库,设置文件名$(OutDir)$ProjectName)d.lib4、如果...转载 2018-09-03 15:34:46 · 2186 阅读 · 1 评论