c++
文章平均质量分 71
皓月如我
这个作者很懒,什么都没留下…
展开
-
设计模式
1. Abstract Factory (抽象工厂)Provide an interface for creating families of related or dependent objects without specifying their concrete classes.提供一个接口,用于创建相关或从属对象的族,而无需指定它们的具体类。使用频率:* * * * *2. Builder(建设)Separate the construction of a complex object f翻译 2021-05-04 16:52:58 · 264 阅读 · 0 评论 -
sudo运行程序遇到的问题
1. user is not in the sudoer file用root用户编辑sudoer文件smart@ha-scada:~$ su - 密码:root@ha-scada:~# sudo visudovisudo: /etc/sudoers.tmp unchangedroot@ha-scada:~# 2. 找不到动态库,无法获取普通用户的LD_LIBRARY_PATH环境变量使用这样的命令去执行:sudo env LD_LIBRARY_PATH=$LD_LIBRARY_PATH原创 2020-09-27 14:13:29 · 647 阅读 · 0 评论 -
C++字符串分割
std::vector<std::string> StringSplit(const std::string &iString){ std::vector<std::string> tStringList; char *s = (char*)iString.c_str(); const char *d = " ,*"; char *p; p = strtok原创 2016-12-16 16:11:23 · 367 阅读 · 0 评论 -
time_t和字符串间的转化
///指定YYYY-MM-DD HH24:MI:SS型的时间,格式化为time_t型的时间///time_t FormatTime2(const char * iTimeStr){ struct tm tTm; time_t oTime; sscanf(iTimeStr, "%4d-%2d-%2d %2d:%2d:%2d", &tTm.tm_year, &原创 2016-12-12 20:07:35 · 966 阅读 · 0 评论 -
SAPI实现TTS
windows sapi tts原创 2016-10-15 14:05:35 · 2098 阅读 · 0 评论 -
C++编程好习惯
本文来自于朋友LJT的日常编程心得。1.不要在构造函数中做初始化操作 要求类(尤其是对外接口类)提供Init()函数,在该函数中进行相关初始化操作,初始化失败能够返回错误码。 可以规避问题: 构造函数中难以返回错误码,外部调用者无从判断初始化结果。 当该类作为全局变量使用时,构造函数调用发生在main()函数执行之前,出现问题难以追踪。2.所有函数返回值都要判断可以规避问题: 及时发原创 2016-08-10 17:26:37 · 2486 阅读 · 0 评论 -
vlc 详细使用方法:libvlc_media_add_option 函数中的参数设置
【转载自】tinyle的专栏 【原文链接地址】http://blog.csdn.net/myaccella/article/details/7027962【手记】 下面列出的参数可以在命令行中执行,也可以在VLC界面中填写。当然,更重要的是能在 程序中调用。 程序中调用的时候要注意,什么是全局参数,什么是会话参数。例如: RTP over TCP的选项,必须用冒号。用双减号则没有效果。转载 2016-07-21 11:51:59 · 32278 阅读 · 4 评论 -
堆栈错误
写此文的目的是为了说明: -> 并非所有的异常都能够做到“不弹框优雅地退出”,堆栈错误因为可能影响安全,所以在异常处理时被加以了限制; -> 堆、栈的头部、尾部被破坏,共有4种情况,现象其实是不一样的,应当加以区分。知道这一点应该能够为排查错误带来一些帮助。先来一个“普通的”异常:除零异常#include <string.h>#include <stdio.h>#include <exc原创 2016-07-31 16:45:24 · 6519 阅读 · 0 评论 -
同一端口是否可以绑定到多个IP上(关于Socket编程中地址与端口绑定那些事)
一块网卡有多个IP,是否能够将同一个端口绑定在多个IP地址上?废话不多说,上源码: 【源码1】#include <QAbstractSocket>#include <QHostAddress>int main(int argc, char *argv[]){ QAbstractSocket *qAbsSocket1 = new QAbstractSocket(QAbstractSocke原创 2016-07-07 20:28:31 · 16307 阅读 · 6 评论 -
简单分析一下socket中的bind
【转自:守夜者 灵感来自于积累 的博客】原文链接:http://www.cnblogs.com/nightwatcher/archive/2011/07/03/2096717.html 在最开始接触bind的时候,只是在写基于tcp的server端的时候,知道在listen之前需要先bind一下,用来确保socket能在某个固定的端口监听。而bind的时候,函数参数中的端口填自己将要绑定的端口就行转载 2016-07-07 20:04:02 · 1306 阅读 · 0 评论 -
使用Poco实现插件方式加载动态库
由虚基类、具体实现、主程序共计3部分组成原创 2016-04-07 11:22:17 · 3692 阅读 · 0 评论 -
C++函数指针与回调函数
【转自】cnblogs.com/chenyuming507950417/archive/2012/01/02/2310114.html 今天讨论下C/C++中的回调函数。 在理解“回调函数”之前,首先讨论下函数指针的概念。函数指针(1)概念:指针是一个变量,是用来指向内存地址的。一个程序运行时,所有和运行相关的物件都是需要加载到内存中,这就决定了程序运行时的任何转载 2016-02-06 22:51:47 · 601 阅读 · 0 评论 -
使用VS进行远程调试
开发环境在A主机上(有源码,已安装VS),运行环境在B主机上(无源码,未安装VS,只有可执行程序exe或dll,以及对应的pdb文件)。在A主机上使用相同版本的源码,对B主机上正在运行的程序进行调试。1. 找到A主机上的远程调试监视器程序,通常在目录 D:\Program\Microsoft Visual Studio 12.0\Common7\IDE\Remote Debugger\x6原创 2015-12-26 09:20:36 · 17057 阅读 · 0 评论 -
C++调用系统函数
说到调用系统函数,最常用的无非是system()和WinExec()。其中system是阻塞模式,后台程序或者图形程序调用的时候会弹出黑窗口;WinExec可以通过参数设置不弹出黑窗口,但是不阻塞,立刻返回。 这次想找一个阻塞模式且不带黑窗口的,网上说ShellExecute可以,我没试验成功。索性用了参数最多最复杂的CreateProcess: std::string cmd = "my原创 2015-12-24 20:10:09 · 2339 阅读 · 0 评论 -
std::string大小写转换及字符数字转换
#include #include #include #include int main(){std::string t_str = "AbCdEf" ;transform(t_str.begin(), t_str.end(), t_str.begin(), toupper);printf("UpperCase : %s\n", t_str.c_str(原创 2015-11-28 14:54:28 · 6079 阅读 · 0 评论 -
Kingbase和PostgreSQL中如何查看当前连接的进程信息
PG查看当前连接信息: select * from pg_stat_activity; Kingbase查看当前连接信息: select * from sys_stat_activity;如果当前的用户连接数已经到达最大值,仍然能够以管理员用户system,使用系统预留的3个保留连接进行登录。 PG/KDB:show superuser_reserved_connections;查出当前连接原创 2017-04-25 20:07:25 · 5930 阅读 · 2 评论 -
跨平台毫秒计时器
etimer.h#ifndef ETIMER_H#define ETIMER_H#include <stdint.h>class Etimer{public: Etimer(); ~Etimer(); void Start(uint64_t iMs); void Stop(); bool CheckTimeout(); uint64_t Time原创 2017-07-11 14:34:17 · 463 阅读 · 0 评论 -
RabbitMQ C Client编译
RabbitMQ官网地址: http://www.rabbitmq.com/在首页中找到Github,点开链接: https://github.com/rabbitmq?q=rabbitmq找到c语言客户端子项目“rabbitmq-c”的链接,重定向到位置: https://github.com/alanxz/rabbitmq-c下载想要的版本,例如:rabbitmq-c-0.8.0.zip原创 2017-07-05 15:48:11 · 1726 阅读 · 0 评论 -
使用迭代器从map或vector中删除元素
std:map的迭代器:删除时只影响当前元素#include "stdafx.h"#include <map>std::map<int, int> m;int main(){ m[1] = 10; m[2] = 100; m[3] = 1000; std::map<int, int>::iterator it; std::map<...原创 2019-08-16 10:31:31 · 2196 阅读 · 0 评论 -
error LNK1112错误: 模块计算机类型“x64”与目标计算机类型“X86”冲突
编译x64的过程中可能会出现LNK1112错误。此时注意3点:项目=>属性=>配置,选择或新建x64平台项目=>属性=>链接器=>高级=>目标计算机,选择MachineX64(/MACHINE:X64)项目=>属性=>链接器=>命令行=>其它选项,里面如果有类似x86的内容,删除掉。网上很多只写了前两点。特此标注。...原创 2019-06-14 10:28:04 · 6240 阅读 · 1 评论 -
windows下编译jsoncpp 1.y.z
百度上搜索“windows 编译 jsoncpp”都是针对jsoncpp 0.y.z版本的(大多是0.5.0或者0.10.x)为主,对1.y.z的几乎没有。而刚好我涉及到的应用(百度AI的c++API必须要求1.6.2以上)。摸索后总结如下。下载jsoncpp源码GitHub下载:https://github.com/open-source-parsers/jsoncpp或者点击 这里 下...原创 2019-06-14 09:53:16 · 2753 阅读 · 0 评论 -
windows下编译支持https的curl
先编译好openssl,过程详见:《windows下编译openssl》下载curl官网:https://curl.haxx.se/download.html原创 2019-06-13 11:40:10 · 3259 阅读 · 0 评论 -
windows下编译zlib
从官网下载zlib源码http://www.zlib.net/解压打开“VS2013 x64 本机工具命令提示”窗口进入目录D:\ProgramIDE\Microsoft Visual Studio 12.0\VC\bin\amd64执行vcvars64.bat进入zlib源码目录并运行nmake -f win32/makefile.msc执行成功后,目录下出现了导入...原创 2019-06-13 10:29:29 · 2071 阅读 · 0 评论 -
如何查看静态库和动态库是32位还是64位
Linux静态库:objdump -a abc.a动态库:file abc.sowindows静态库和动态库:dumpbin /HEADERS abc.dlldumpbin /HEADERS abc.lib原创 2019-06-13 10:23:11 · 8383 阅读 · 0 评论 -
windows下编译openssl
1. 下载ActivePerl原创 2019-06-12 17:50:22 · 8781 阅读 · 3 评论 -
c语言实现ini文件读取
#include <stdio.h> #include <string.h> const int MAX_KEY_NUM = 128;const int MAX_KEY_LENGTH = 1024;char gKeys[MAX_KEY_NUM][MAX_KEY_LENGTH];char *GetIniKeys(char *title, char *fil...原创 2019-03-29 09:52:46 · 3495 阅读 · 2 评论 -
C++ 区分中文,非中文,截取含有中文的string字符串的两种方法
C++ 区分中文,非中文,截取含有中文的string字符串的两种方法方法一 根据中文在ASCII中的范围判断方法二 把string转成wstring转自:http://blog.51cto.com/imyzy/1190639方法一 根据中文在ASCII中的范围判断#include "stdafx.h"#include <string>#include <iostream...转载 2018-12-03 17:21:30 · 4258 阅读 · 3 评论 -
CentOS安装高版本gcc
CentOS7自带gcc4.8.5,哪怕用yum install gcc-c++也不能升级到gcc5或者6。如果想要安装更高版本的gcc,可以按照如下步骤:$ sudo yum install centos-release-scl -y$ sudo yum install devtoolset-6-gcc devtoolset-6-gcc-c++$ scl enable devto原创 2018-01-16 18:04:58 · 4679 阅读 · 0 评论 -
GBK字符集和UTF8字符集的转换C++
///UTF8转化为GBK格式///void ConvertUtf8ToGBK(CString &ioStr){ int len=MultiByteToWideChar(CP_UTF8, 0, (LPCTSTR)ioStr, -1, NULL,0); wchar_t * wszGBK = new wchar_t[len]; memset(wszGBK,0,len);转载 2017-10-23 19:50:04 · 566 阅读 · 0 评论 -
C++11带来的全新数值和字符串转换函数
数值转字符串:std::string str; int a = std::stoi(str); float b = std::stof(str);double b = std::stod(str);字符串转数值:string to_string (int val);string to_string (long val);string to_string (long long val);原创 2017-07-25 09:06:42 · 1645 阅读 · 0 评论 -
RabbitMQ-c在Linux上编译
安装CMake: (1)下载cmake:http://download.csdn.net/download/fm0517/9936318 (2)解压:tar -xvzf cmake-3.9.1.tar.gz (3)进入目录 cmake-3.9.1 (4)执行:./bootstrap (5)编译,执行:gmake (6)安装(可选),执行:make install编译RabbitMQ-c原创 2017-08-16 13:52:25 · 3686 阅读 · 0 评论 -
Windows和Linux下取得系统时间(毫秒级)
Lunux:struct timeval tv;gettimeofday(&tv, NULL);printf("sec = %d, ms = %d\n", tv.tv_sec, tv.tv_usec / 1000);Windows:#include struct timeb tp;ftime(&tp);printf("sec = %d, ms = %原创 2015-11-27 10:56:56 · 2564 阅读 · 0 评论 -
写程序时如何使用日志
本文来自于朋友tzz的日常编程心得。日志分级6个日志等级:TRACE/DEBUG/INFO/WARNING/ERROR/FATAL 为了更好的使用日志系统,需要清楚的知道每个日志级别的功能定位和特点。默认输出标准: 终端:DEBUG(含DEBUG)级别以上日志会被实时输出到终端(标准输出)。 默认情况下,TRACE不打印到终端。 文件:INFO(含INFO)级别以上日志会被归档到日志文件。原创 2015-11-19 15:17:57 · 8503 阅读 · 0 评论 -
Windows7_x64下编译64位ffmpeg
【转自】http://www.cnblogs.com/dwdxdy/p/3626999.html本文主要记录在64位Windows 7下,编译64位ffmpeg的过程。1.资源准备 (1). MSYS(http://sourceforge.net/projects/mingwbuilds/files/external-binary-packages/)原创 2015-03-28 11:46:22 · 7542 阅读 · 3 评论 -
GetLastError返回值的意义----适用在eVC和VC++
DWORD dw; dw = GetLastError(); printf("Failed: GetLastError returned %u/n", dw); ExitProcess(dw); DWORD是一个无符号整形数,根据打印出的数值,可以在下表中找到相应的错误。 〖0〗-操作成功完成。〖1〗-功能错误。〖2〗-系统找不到指定的文件。〖3〗-系统找不原创 2009-09-02 09:46:00 · 3521 阅读 · 0 评论 -
string应用
之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必担心内存是否足够、字符串长度等等,而且作为一个类出现,他集成的操作函数足以完成我们大多数情况下(甚至是100%)的需要。我们可以用 = 进行赋值操作,== 进行比较,+做串联(是不是很简单?)。我们尽可以把它看成是C++的基本数据类型。 好了,进入正题………首先,为了在我们的程序中原创 2009-06-23 09:14:00 · 719 阅读 · 0 评论 -
Vector用法(C++ Primer中文版)
vector是同一种类型的对象的集合,每个对象都有一个对应的整数索引值。和string对象一样,标准库负责管理存储元素的相关内存。我们把vector称为容器,是因为它可以包含其他对象。一个容器中的所有对象都必须是同一种类型的。我们将在第9章更详细地介绍容器。使用vector之前,必须包含相应的头文件。本书给出的例子,都是假转载 2009-06-09 11:03:00 · 31181 阅读 · 2 评论 -
VC++中把一个对话框最小化到托盘
转自:http://zhidao.baidu.com/question/39126833.html一、托盘简介 所谓的“托盘”,在Windows系统界面中,指的就是下面任务条右侧,有系统时间等等的标志的那一部分。在程序最小化或挂起时,但有不希望占据任务栏的时候,就可以把程序放到托盘区。二、托盘编程相关函数 把程序放到托盘上的本质就是先在托盘区绘制一个图标,然后把程序隐藏转载 2008-12-06 14:20:00 · 1089 阅读 · 0 评论 -
VC++:如何将程序最小化到托盘
转自:http://qzone.qq.com/blog/412405871-1211101395转载 2008-11-29 20:21:00 · 885 阅读 · 1 评论 -
STL的map用法
STL的map用法转自: http://www.ecjtu.org/forum/htm_data/59/0712/14427.html 1. map中的元素其实就是一个pair.2. map的键一般不能是指针, 比如int*, char*之类的, 会出错. 常用的就用string了,int也行.3. map是个无序的容器, 而vector之类是有序的. 所谓有序无序是指放入的元素并转载 2008-11-25 10:30:00 · 658 阅读 · 0 评论