C++ - 技术教程文章

LeetCode682 栈·棒球比赛(C++)【代码】

题目描述:你现在是棒球比赛记录员。给定一个字符串列表,每个字符串可以是以下四种类型之一:1.整数(一轮的得分):直接表示您在本轮中获得的积分数。2. "+"(一轮的得分):表示本轮获得的得分是前两轮有效 回合得分的总和。3. "D"(一轮的得分):表示本轮获得的得分是前一轮有效 回合得分的两倍。4. "C"(一个操作,这不是一个回合的分数):表示您获得的最后一个有效 回合的分数是无效的,应该被移除。每一轮的操作都是永久性...

从C到C++ (2)

从C到C++ (2)一、 C++中增加了作用域标示符 ::1、 用于对局部变量同名的全局变量进行访问。2、 用于表示类成员。二、 new、delete运算符1、 new运算符用于创建堆空间,成功返回首地址失败抛出异常(C++有异常处理机制,C语言中无此机制所以结果要与NULL比较),语法: 指针变量 = new 数据类型; 指针变量 = new 数据类型[长度] 例如: int *p; p...

C++中wstring和string的互相转换

1、wstring 转换为string#include <string> std::string ws2s(const std::wstring& ws) {std::string curLocale = setlocale(LC_ALL, NULL); // curLocale = "C";setlocale(LC_ALL, "chs");const wchar_t* _Source = ws.c_str();size_t _Dsize = 2 * ws.size() + 1;char *_Dest = new char[_Dsize];memset(_Dest,0,_Dsize);wcstombs(_Dest,_Source,_Dsize);std::string result = _Dest;delete []_Dest;setlocale(LC_ALL, cu...

关于DEV-c++ 运行窗口闪退的解决办法【代码】

因为程序默认运行结束自动关闭,所以运行窗口会被秒关,反复下载了很多遍也没有解决。上网看过许多博客后,有好多方法,总结一下:①在return 0;前加getchar();(getchar();是得到一个字符的意思,可以char a=getchar();)。不过如果有输入语句,那就要加多些getchar();。②加头文件#include<stdlib.h>,并且在return 0;前加system("pause");让它按任意将继续。③一种非常好(搞)用(笑)的方法:在程序结束的最后加上while...

c++异常处理

C++异常当然可以通过try...catch处理,不过没有finally关键词。C++资源的释放可以通过RAII实现。RAII,也称为“资源获取就是初始化”,是c++等编程语言常用的管理资源、避免内存泄露的方法。它保证在任何情况下,使用对象时先构造对象,最后析构对象。Destructors should never emit exceptions. If functions called in a destructor may throw, the destructor should catch any exceptions, then swallow them or terminate the...

[C++STL] set 容器的使用【代码】

set 容器的入门unorderset :按照insert顺序排序,另外头文件。multiset:可以重复存在的集合。用count()读取个数创建set的几种方式常规set<数据类型>s;声明并初始化set<数据类型>s{value1,value2};set的特性set 容器内没有重复元素每次insert的时候,都会自动排好序。(默认升序)键值对, key 和值 value 相同。修改值出现的问题( 删除 再 输入 )常用函数函数说明insert()向 set 容器中插入元素。erase()删除 set 容器中存储的元素...

通过c++类创建对话框【代码】

本文由 书画小说软件 整理发布 内容与本软件无关 更惬意的读、更舒心的写、更轻松的发布对话框直接添加类,类向导添加时出现了问题。因此便想通过添加C++类的方式间接实现添加对话框类。第一步:添加C++类#pragma onceclass CWordCountDlg {public: CWordCountDlg(void); ~CWordCountDlg(void); };#include "StdAfx.h"#include "WordCountDlg.h" CWordCountDlg::CWordCountDlg(void){} CWordCountDlg::~CWordCountDlg(voi...

C++学习(5)【代码】【图】

1//设计一个线段类 2 #include<iostream.h>3class Point{4private:5int x;6int y;7public:8 Point(){}9 Point(int x,int y){ 10this->x=x; 11this->y=y; 12 } 1314 Point(Point &c){ 15 x=c.x; 16 y=c.y; 17 } 1819 ~Point(){ 20 } 2122int GetX() const{ 23returnthis->x; 24 } 2526int GetY() const{ 27returnthis->y; 28 } 29}; 30...

C++学习之路:纯虚函数【代码】【图】

背景:当有些方法无法继承,或者说无意义的时候,例如shape类,那么基类的接口便无法实现。那么这时候就需要引入纯虚函数。几何基类: Shape 拥有Draw方法,三角,圆形,菱形等Draw方法各不相同。只能使用纯虚函数,拥有纯虚函数的基类称为抽象类,抽象类无法被实例化,纯虚函数也不需要实现。@纯虚函数的定义#纯虚函数一般不需要实现。 @抽象类 作用:抽象类作为抽象和设计的目的而声明,将有关的数据和行为组织在一个集成层...

Atitit.java jna  调用c  c++ dll的原理与实践  总结  v2  q27

Atitit.java jna 调用c c++ dll的原理与实践 总结 v2 q27 1. Jna简单介绍12. Jna范例halo owrld13. Jna概念23.1. (1)需要定义一个接口,继承自Library 或StdCallLibrary23.2. 2)接口内部定义24. 数据类型映射 NA官方给出的默认类型映射表如下:35. JNA能完全替代JNI吗?36. 参考4 1. Jna简单介绍原来使用JNI,你必须手工用C写一个动态链接库,在C语言中映射Java的数据类型。JNA中,它提供了一个动态的C语言编写的转发器,...

C++第07课 继承

1.基本概念继承: 父类 子类 ,子类没产生新的东西派生:基类 派生类继承A 产生B ,A B2.继承的实质父类的属性在子类中也存在一份,构造函数不能被继承3.继承的权限问题| | public | protected | private || ------------- | ------------- | ------------- | -------- || public继承 | public属性 | protected属性 | 不可访问 || protected继承 | protected属性 | protected属性 | 不可访问 || private继承 | private属性 ...

C++实验三【代码】【图】

实验结论:1)Part1 验证性内容:以多文件结构组织的项目文件示例:在画布上可以上下左右移动的小球Ctrl C+V之后编译运行出现了如下界面:(假装有图片) 2)Part2 基于已有信息,补足并扩充程序。 在graph文件夹里提供有三个文件: graph.h (类Graph的声明) graph.cpp (类Graph的实现) main.cpp (类Graph的测试: 定义Graph类对象,调用绘图接口绘制图形) graph.h#if !defined GRAPH_H #define GRAPH_Hclass Graph {public:Graph(...

C++请求web service与xml解析

1. C++解析XML的开源库 在项目中XML的解析使用的是开源的第三方库,TinyXML;这个解析库的模型通过XML文件,然后再内存中生成DOM模型,从而让我们可以很方便的遍历这颗XML树。DOM模型即文档对象模型,是将整个文档分成多个元素(如:书、章、节、段等),并利用树型结构表示这些元素之间的顺序关系以及嵌套包含关系。先看一下TinyXML中的主要类和XML文档之间的对应关系,下图是TinyXML中主要class的类图,反应各个类之间的静...

C++11新特性——初始化列表 initializer_list【代码】【图】

破事水:  由于最近数据结构有个实验报告说是要对字符串进行排序,想偷个懒不想一个一个地赋值,虽然可以用strcpy和传入二级指针的形式直接写,但是这样感觉不美观漂亮。  然后就去膜了一下C++11的新特性——初始化列表,概念就不说了,就讲下这东西具体怎么用吧,就是正常的写一个构造函数,然后把参数改为initializer_list<数据类型> &t  如图所示。可以理解为传入的参数数据被放到了一个储存器t中,利用C++11的auto可以直...

c++使用mysql的api连接相关问题

记录一下自己使用中的相关问题,方便有同样问题的同学解决。关于在VS中的各种配置,看这里,不过需要注意一下,我现在用的mysql版本是5.6的,已经没有【MySQL Server \lib\opt】这个路径了,将这一项设置到【MySQL Server \lib】即可如果出现如下错误:1>main.obj : error LNK2019: 无法解析的外部符号 _mysql_server_init@12,该符号在函数 _main 中被引用 1>main.obj : error LNK2019: 无法解析的外部符号 _mysql_init@4,该符号...

C++并发多线程(一)

并发:两个或者更多的任务同时发生,一个程序同时执行多个独立的任务。以往计算机 单核CPU 某一个时刻只能执行一个任务 由操作系统调度 每秒钟进行多次所谓的任务切换并发的假象(不是真正的并发),这种切换(上下文切换)时要有时间开销的。线程每个进程(执行起来的可执行程序),都有一个主线程 这个主线程是唯一的 也就是一个进程中只能有一个主线程。当你执行要给刻执行程序 ,产生了一个进程后 这个主线程就随着这个进程默...

重要:Linux下IDE--KDevelop (用来跟踪调试C++) Ubuntu下QT4开发环境的搭建及初体验【图】

Linux下安装Qt4有两大问题,一是环境变量,二是IDE(集成开发环境)。安装Qt4也有两种方法,一种是apt-get,一种是下载源码包,而后 一种方法已经人证实是最有可能不好使的方法。所以我最终采用了apt-get的方式。而apt-get也有两种方式(这就是Free OS之不爽之处):新立得与命令行。这里强烈建议大家使用命令行方式!因为新立得里面的东西太乱,你很可能下载了一大堆东西却没一个是我们真正需要的,而 且下载完成后要自己去配置...

C++函数指针简单使用

函数指针:函数指针必须包含要调用的函数的内存地址,为了工作正确,指针还必须包含其他信息,即指针所指向的函数的参数列表中的参数类型以及返回类型。因此,在声明函数指针时,必须指定该指针可以指向的函数的参数类型和返回类型,以及指针名。函数指针的一般形式如下:返回类型(*指针明名)(参数类型列表);注意:指针名上的括号是必不可少的,否则*就会与返回类型结合,就成了一个函数原型了。示例:#include <iostream> usi...

CeF3开发者系列之JS与C++交互之一【图】

JS与Native交互是一个比较大的技术,在学习这门技术之前,我们先来热身下。我们先了解下浏览器内核中的JS引擎与chromium内核的V8引擎相关知识。在浏览器应用中,JS与本地代码互相调用,得益于浏览器内核对JS的支持。每一个浏览器内核都有JS引擎,当我们在浏览器上操作时,浏览器把侦听到的事件进行分发,如果与JS相关,浏览器事件触发线程会为我们把指定的事件处理程序添加到js引擎当中。各大浏览器的JS引擎如下:主要的网页浏览器...

C++进程检测,发现进程路径,关闭进程(二)

上一章使用的函数比较复杂,本章直接使用根据进程ID号并使用GetModuleFileNameEx函数实现进程路径的获取#include "stdafx.h" #include <windows.h> #include "stdio.h" #include <tlhelp32.h> #include "Psapi.h" int _tmain(int argc, _TCHAR* argv[]) {int num=0;TCHAR exe_name[20]=_T("notepad++.exe");//要查询的进程名TCHAR pszFullPath[MAX_PATH];PROCESSENTRY32 pe32;//用于存放进程信息的结构体HANDLE hProcessSnap=::Cre...

10、【C++ STL】容器适配器(stack queue priority_queue)【代码】

容器适配器  stack、queue、priority_queue 都不支持任一种迭代器,它们都是容器适配器类型,stack是用vector/deque/list对象创建了一个先进后出容器;queue是用deque或list对象创建了一个先进先出容器;priority_queue是用vector/deque创建了一个排序队列,内部用二叉堆实现。1、stackstack的源码如下: 1// TEMPLATE CLASS stack 2 template < class _Ty,3class _Container = deque<_Ty> >4class stack5{6// LIFO queue implem...

C++运算符重载的妙用

运算符重载(Operator overloading)是C++重要特性之一,本文将介绍运算符重载在C++标准库里的妙用。如果你对C++的运算符重载掌握的游刃有余,那就无需继续往下看了。运算符重载带来的好处就是——让代码变得简洁。下面将展示几个标准库因使用运算符重载而是代码简洁的实例。Hello, World与operator<<刚学C++时看到的第一个C++程序就是Hello World,它当时长得这样:#include <iostream>using namespace std;int main(int argc, ch...

C++PRIMER第二章前半部分答案【代码】

C++PRIMER第二章前半部分答案哈哈哈,为什么是前半部分呢,后半部分还在学习中,重新系统性的学习c++,共同进步嘛,不多说,跟我一起来看看吧,第三章开始才是新手收割的时候,慢慢来~~2.1&2.2// 1.尺寸不同也就是可表示的数据大小不同,无符号和有符号即一个是所有bit都来存储值表示数据没有符号,另一个则相反,float与double即表示精度范围不同,double更精准些 // 2.利率,本金,付款都可选用double,因为浮点数运算通常选double // 当然,学过...

C++使用TinyXML【代码】【图】

参照一:http://qaohao.iteye.com/blog/496237参照二:http://hi.baidu.com/lnylvoeegzcgnrr/item/af68fd9cde40fc1a924f41f5别人封装的TinyXML:.h文件 1 #include "xml\tinyxml.h" 2 #include <string>3usingnamespace std;4 5#if !defined(AFX_STDAFX_H__UDXML_EF91_4EF1_A2F2_53AD89B23C30__INCLUDED_)6#define AFX_STDAFX_H__UDXML_EF91_4EF1_A2F2_53AD89B23C30__INCLUDED_7 8#if _MSC_VER > 10009#pragma once10#endif 11 1...

c++ initializer_list【代码】【图】

首先需要开启编译器C++11,按照如下步骤(codeblocks)Setting-->Compiler 勾选下图红色方框的选项。 首先看看initializer_list 的作用,可以用大括号来初始化STL的容器,以及可以在for循环中来使用。 1 #include <iostream>2 #include <vector>3usingnamespace std;4 5int main()6{7 vector<string> v{"ab","cd"};8 vector<string>::iterator begin = v.begin();9while(begin!=v.end()) 10 { 11 cout << *begin+...

C++中stringstream ostringstream istringstream使用方式【图】

C++引入了ostringstream、istringstream、stringstream这三个类,要使用他们创建对象就必须包含sstream.h头文件。istringstream类用于执行C++风格的串流的输入操作。 ostringstream类用于执行C风格的串流的输出操作。 strstream类同时可以支持C风格的串流的输入输出操作。istringstream类是从istream和stringstreambase派生而来,ostringstream是从ostream和 stringstreambase派生而来, stringstream则是从iostream类和stringst...

vc++windows编程技术(3)

从一开始就有两种编写windows应用程序的方法。第一种是使用win32定义的API函数,体现细节好。另一种是使用特殊的c++类库,它囊括了API,目前最流行的是MFC。两种方法的区别:所有windows应用程序共享一个基本结构,MFC屏蔽了该结构的许多元素;使用API可以详细的控制程序运行,而使用MFC某些低级控制无法实现;API可用c或c++来编程而mfc必须使用c++,而且必须要有类库的支持。所以API是MFC的基础吧。 3.1windows要有的基本类型 ...

C++ 指针

首地址:一段连续的存储地址中,第一个单元的地址是首地址。指针类型的加减,是以指针所指向的类型为单位,进行偏移。 一维数组与指针:定义一个一维数组,数组名是整个数组首地址。int a[5];其中a和&a[0]是相同的,都是整个数组的首地址,类型是int*但是&a的类型是int(*)[5],,指向数组的整个地址。如何利用指针访问数组的值?定义一个数组 int a={1,2,3,4,5};定义一个指针 int *p =a;//a代表了这个数组的首地址,p指向a[0]那么*p...

Effective C++学习笔记(Part Two:Item 5-12)

??近期最终把effectvie C++细致的阅读了一边,非常惊叹C++的威力与魅力。近期会把近期的读书心得与读书笔记记于此。必备查找使用,假设总结有什么不当之处,欢迎批评指正:如今仅仅列出框架。近期会尽快填充完整:第2部分:构造/析构/赋值运算 个人觉得这是C++的比較难理解的地方,也是C++的深邃所在,刚開始阅读时,可能在某些地方不理解,最好的方式是边读边编程实现,用心去思考其精髓所在!条款5:了解C++默默编写并调用那些函数...

小学生趣味C++编程第53课 化功大法(完整)【代码】

链接:https://pan.baidu.com/s/1qDdBkFPakLtCvh8_W2wiog 提取码:x3zg#include<iostream> #include<cmath> //调用求浮点数的绝对值函数fabs() using namespace std; int main() {double x,y;long long a,b,i,j;cout<<"请输入一个纯小数"<<endl;do{cout<<"x=";cin>>x;}while(x>=1||x<=0);a=1;y=x;while(fabs(y-(int)y)>1e-10) //纯小数化成整数{a*=10;y=x*a; //不可以写成 y=y*10;} //因误差不停的扩...