
C/C++
UU_Yang
这个作者很懒,什么都没留下…
展开
-
(多继承+模板回传子类)的结构所遇到的问题
在调试一个项目时,发生崩溃,通过调用堆栈看是访问成员变量时发生的,代码结构如下。原创 2024-10-12 15:02:53 · 753 阅读 · 0 评论 -
Windows和Linux下遍历文件
Windows下和Linux下遍历目录文件的代码示例原创 2022-11-09 12:19:10 · 227 阅读 · 0 评论 -
windows与linux遍历文件
windows和linux上遍历目录的几个函数示例原创 2022-11-09 12:02:45 · 200 阅读 · 0 评论 -
CMakelists生成VS工程
可通过GUI和命令行两种方式,GUI方式也就是设置目录,设置编译器,生成,比较简单直观不讲了。下面说下命令行方式。2 将包含CMakelists.txt文件的源码目录放在总目录中如mycode。5 进入build目录看到sln,打开用vs编译。4 打开命令行,进入budil目录执行。1 创建总目录如project。原创 2022-09-15 18:45:02 · 2702 阅读 · 0 评论 -
Visual Studio高级调试技巧
转自:Visual Studio高级调试技巧 - 可可西 - 博客园1. 设置软件断点,运行到目标位置启动调试器方法①:使用汇编指令(注:x64 c++不支持嵌入汇编)_asm int 3方法②:编译器提供的方法__debugbreak();方法③:使用windows APIDebugBreak();WerFault.exe进程(Windows Error Reporting)弹出ConsoleTest.exe已停止工作:要想出现“调试程序”选项,需要将Wind转载 2022-03-29 13:42:40 · 3119 阅读 · 0 评论 -
关于filesystem在c++11、14、17中的使用问题
1在C++11时,该类库定义在std::tr2::sys命名空间#include<filesystem>using namespace std;using namespace std::tr2::sys;//示例void RemoveFile(){ directory_iterator end, ite("aaa\\"); for (; ite != end; ++ite) { auto& thePath = ite->.原创 2022-02-25 15:12:19 · 13528 阅读 · 0 评论 -
关于_variant_t的一些总结
该类型是对COM类型VARIANT数据的封装,方便与C/C++数据类型转换定义在头文件<comutil.h> 实现在comsupp.lib /comsuppd.lib/comsuppw.lib/comsuppwd.lib【关于构造赋值】该类封装了各种基本类型构造和赋值函数,可以直接定义赋值:_variant_t vstr = "5";_variant_t vint = 5;_variant_t vbl = true;【关于取值和转换】可以判断vt成员值,根据其准确类型取对应值原创 2021-12-03 11:52:35 · 965 阅读 · 0 评论 -
关于Loadlibrary 失败-找不到指定模块126错误
近期C++做了一个简单的小功能放到动态库,主程序Loadlibrary动态加载,在本机调试好好的,发布到其他环境就出现加载失败问题,明明dll就在同目录下。尝试了固定路径等都没有解决问题,主程序加载dll的路径经调试输出,确定没有问题。这个时候最大的可能就是排查dll是否同时又引用了其他的dll,若有缺失那必然导致当前dll无法被加载。因为这个dll是vs2012编译的,所以环境必须有msvcp110.dll和msvcr110.dll两个基础库,可以安装2012的vcredist,也可以将两个dll原创 2021-09-08 09:36:14 · 6431 阅读 · 0 评论 -
控制台程序线程莫名被阻塞
写了个控制台小程序,起线程通过UDP循环接收数据,在windows server2019执行,发现运行一会儿就莫名阻塞,端口在正常监听,但是不收任何数据,通过嗅探工具能发现数据到达端口,最后发现敲下回车就好了,推测是什么挂起了线程。在windous7开发机上跑测试时,从来没有这种情况。对比控制台窗口发现,win2019的窗口可以直接拖选操作,打开控制台窗口属性,发现比win7多了很多选项,最后发现取消控制台窗口的“快速编辑模式”就好了。win7下也有“快速编辑模式”只是默认不选,而win20原创 2020-12-25 14:11:38 · 1214 阅读 · 0 评论 -
ofstream 使用的一点主意事项
不正确地调用close不会导致任何异常,但代码却出现了潜在的隐患,仅仅使用is_open() 或 bad()还无法检测出这个错误原创 2013-07-18 15:53:07 · 1914 阅读 · 0 评论 -
auto、static、register、const、volatile 、extern
转自:http://blog.sina.com.cn/s/blog_4b9216f50100ean1.htmlauto这个这个关键字用于声明变量的生存期为自动,即将不在任何类、结构、枚举、联合和函数中定义的变量视为全局变量,而在函数中定义的变量视为局部变量。这个关键字不怎么多写,因为所有的变量默认就是auto的。register这个关键字命令编译器尽可能的将转载 2013-04-19 16:47:47 · 897 阅读 · 0 评论 -
C++语言的15个晦涩特性
转自:http://developer.51cto.com/art/201312/425995.htm这个列表收集了 C++ 语言的一些晦涩(Obscure)特性,是我经年累月研究这门语言的各个方面收集起来的。C++非常庞大,我总是能学到一些新知识。即使你对C++已了如指掌,也希望你能从列表中学到一些东西。下面列举的特性,根据晦涩程度由浅入深进行排序。这个列表收集了 C++ 语言的一些晦涩转载 2013-12-31 09:31:16 · 940 阅读 · 0 评论 -
no_namespace rename
转自:http://zhidao.baidu.com/question/208531160.html 及 http://technet.microsoft.com/zh-cn/library/ze72hya7.aspx#import生成文件 msado15.tlh,默认是有namespace ADODB { },所有内容都包在这个名字空间中。用了no_namespace则生成转载 2013-04-18 19:54:18 · 1789 阅读 · 0 评论 -
_variant_t与相关类型之间的转换
转自:http://iamzxf.blog.sohu.com/157600930.html(1)与字符串CString: _variant_t temp; CString str_wtdw; str_wtdw=temp.bstrVal;(2)与整数int: _variant_t temp; int value; value=temp.iVal; //有时转载 2013-04-16 12:38:48 · 3069 阅读 · 0 评论 -
c_c++控制台程序字符输入总结
while (1){ //标准c函数,包含于stdio.h //getchar() 字符,阻塞,要按回车,回显 //gets() 字串,阻塞,要按回车,回显 //微软c函数,包含于conio.h //getch() 字符,阻塞,不用按回车,不回显 //getche() 字符,阻塞,不原创 2013-02-05 11:14:06 · 6520 阅读 · 1 评论 -
C++几处代码优化记录
//以下基于Debug调试模式, map mss; clock_t c1, c2; c1 = clock(); for (int i=0; i<500000; i++) { unsigned int lun = 123324; char num[] ="012345678912"; vector vv; //【1】ostringstream 效率原创 2013-02-01 18:24:35 · 1110 阅读 · 0 评论 -
STL map使用自定义对象做key
#include using namespace std;struct grid{ unsigned short x; unsigned short y; bool operator<(const grid& g)const { if ( y < g.y) { return true; } else if(y==g.y && x <原创 2013-04-19 14:43:49 · 2030 阅读 · 0 评论 -
C++如何获取文件属性
转自:http://www.blue1000.com/bkhtml/2010-04/67485.htmC++如何获取文件属性,stat系统调用系列包括了fstat、stat和lstat,它们都是用来返回“相关文件状态信息”的,三者的不同之处在于设定源文件的方式不同。stat系统调用系列包括了fstat、stat和lstat,它们都是用来返回“相关文件状态信息”的,三者的转载 2013-02-01 14:26:06 · 2069 阅读 · 0 评论 -
智能指针
转自:http://www.cnblogs.com/hktk/archive/2012/07/15/2592416.html一、简介由于 C++ 语言没有自动内存回收机制,程序员每次 new 出来的内存都要手动 delete。程序员忘记 delete,流程太复杂,最终导致没有 delete,异常导致程序过早退出,没有执行 delete 的情况并不罕见。用智能指针便可以有效缓解这类问转载 2012-12-20 13:57:57 · 761 阅读 · 0 评论 -
VC编程中疑难错误解决方法之C4251
转自:http://wenku.baidu.com/view/bed5cbc49ec3d5bbfd0a74d7.html代码:Warning C4251描述:class“Class Name”需要有dll接口原因和解决方法:a) 如果该类(Class Name)的定义里面仅含有编译器内置的类型变量,如int、 float等等,或者成员函数仅使用了这些变量作为参数,那么只转载 2012-12-05 15:50:03 · 1252 阅读 · 0 评论 -
关于C++中如何判断文件,目录存在的若干方法
转自:http://www.cnblogs.com/project/archive/2010/12/02/1894494.html,文尾有追加在我们平时的编程时,经常需要判断文件或者目录是否存在,相对来说判断文件的存在性比较简单,目录则比较复杂。 下面就详细的介绍几种方法。 首先关于判断文件的存在性: 一、ifstream 在C++中,可以利用ifstre转载 2012-11-22 16:19:28 · 1401 阅读 · 0 评论 -
C++混合运算的类型提升和溢出
看看下面的运算结果各是多少呢? #define MYUINT_MAX 4294967295 //0xffffffff #define MY_MAX 4294967296 //0x100000000 unsigned __int64 sz1=0, sz2=0; sz1 = MYUINT_MAX + 1; sz2 = MY_MAX + 1; 答案是【sz原创 2012-11-14 12:51:53 · 2728 阅读 · 0 评论 -
multimap中的搜索
multimap mm; mm.insert(make_pair("aa", 1)); mm.insert(make_pair("bb", 2)); mm.insert(make_pair("aa", 3)); int n =0; //方法1 使用count和find int ncount = mm.count("aa"); multimap::iterator itr = mm原创 2012-11-08 17:40:49 · 745 阅读 · 0 评论 -
32位项目转64位一些问题记录
到现在还一直在用WindowsXPSP3+VS2008SP1;VS2010也装了,但是用了几次实在忍受不了其打开方案速度;VS2012也发布有一段时间了,与Win8一样采用了简约平面化的风格,只是不知道性能是否该改善,由于VS2012不支持XP系统,所以还没有详细体验。最近有几个项目需要移植到64位系统,这里记录一些问题,备个案。1、项目引用的库都需要使用64位版本,有源码的自己编译64位版本原创 2012-10-28 15:59:56 · 3548 阅读 · 1 评论 -
MySQL使用connector C/C+读取二进制字段
MySQL使用connector C/C+读取二进制字段,两种方法:用getStringvector vec; while (pResultSet->next()) { string str = pResultSet->getString("data"); vec.insert(vec.end(), str.begin(), str.end()); }用ge原创 2012-11-05 18:06:49 · 1876 阅读 · 2 评论 -
写的一个split函数
vector strsplit(const string& str){ vector vec; string sstr1=str, sstr2=""; size_t np=0; while (sstr1!="") { size_t dt = sstr1.find(','); if (dt != string::npos) { sstr1 = str.substr(np原创 2014-06-19 16:47:53 · 1650 阅读 · 0 评论 -
拷贝构造函数和赋值表达式的区别
转自:http://blog.163.com/zhoumhan_0351/blog/static/39954227201032845132592/拷贝构造函数和赋值表达式的区别一、引入 拷贝构造函数,用已创建的对象来初始化新建对象,对于一个已经被初始化的对象则进行operator=赋值操作。class A; A a;A b转载 2015-04-03 17:29:12 · 623 阅读 · 0 评论 -
"正在为 rasapi32.dll 加载符号"问题解决
使用vs2008调试程序时,发现总是长时间卡在一个地方,时间长到失去了耐心,vs状态栏有如下提示:正在为 rasapi32.dll 加载符号通过百度,使用以下方法解决,在电脑属性中找到下面的环境变量,然后删除即可_NT_SYMBOL_PATHsrv*c:\symbolcache*http://msdl.microsoft.com/download/symbols原创 2015-09-10 10:19:13 · 2374 阅读 · 0 评论 -
(转)dll导出函数的两种方式的比较
转自:https://blog.youkuaiyun.com/zhazhiqiang/article/details/51577523【原文:http://www.xuebuyuan.com/1752443.html】dll的def文件与__declspec(dllexport)导出函数方式比较【__declspec(dllexport)方式】首先对C和C++编译(extern "...转载 2019-07-24 10:50:49 · 1015 阅读 · 0 评论 -
C++-函数模板特化如何避免重复定义
本文转自:https://www.cnblogs.com/dracohan/p/3401660.html 转来收藏以便查阅,感谢原作者另一篇相关博文:https://blog.youkuaiyun.com/shixin_0125/article/details/78778234我正在用一个基于模板的库源代码,该库包含一些针对特定类型的模板函数特化。类模板,函数模板和模板函数特化都在头文件中。我在我的...转载 2018-11-28 18:16:17 · 6520 阅读 · 0 评论 -
(C++)UrlEncode的标准实现
关于UrlEncode的实现(C++),网上有很多不同的版本,对需要编码的字符集的选取并不统一。那么到底有没有标准呢?答案是有的,参见wiki 绝对不编码的,只有字母、数字、短横线(-)、下划线(_)、点(.)和波浪号(~),其他字符要视情况而定,所以一般性的urlencode只需保留上述字符不进行编码。 下面给出实现:unsigned char ToHex(uns...转载 2018-07-25 09:42:44 · 1583 阅读 · 0 评论 -
使用WinInet函数简单实现FTP客户端
#include <WinInet.h>#pragma comment(lib, "WinInet.lib")bool FTPUpload(const string& strFtpHost, int nPort, const string &strUser, const string &strPwd, const string& strLoca...原创 2018-04-27 14:57:32 · 1443 阅读 · 0 评论 -
VS2010-2015对C++11/14/17特性的支持
C++11 功能列表Visual C++ 实现了 C++11 核心语言规范 中的绝大多数功能、许多 C++14 库功能和某些为 C++17 建议的功能。 下表列出了 C++11/14/17 核心语言功能及其在 Visual Studio 2010、Visual Studio 2012 中的 Visual C++、Visual Studio 2013 中的 Visual C++ 和 Visual S...转载 2018-05-04 17:55:00 · 30521 阅读 · 0 评论 -
可以在线C++编译的工具站点
以下是搜集的几个可以在线编写代码并编译的站点https://c.runoob.com/https://www.tutorialspoint.com/compile_cpp11_online.phphttps://tio.run/#cpp-gcchttps://wandbox.org/https://gcc.godbolt.org/原创 2017-10-09 17:09:37 · 4844 阅读 · 0 评论 -
C++参考在线
一个很好的C++标准参考站点 Cppreference.com原创 2017-07-26 10:32:31 · 729 阅读 · 0 评论 -
c++字符串大小写转换
转自:http://www.cnblogs.com/greenerycn/archive/2009/07/01/1515080.html在C++中,由于没有单独定义string这个对象,所以字符串的操作比较麻烦些。字符串转换大小写是一个常用的功能,今天就简单总结下常用转换的方法: 由于ANSI和Unicode在函数名上有差别,故都列出来,不过本人以Unicode为主。【1.用C转载 2016-03-18 18:50:19 · 9259 阅读 · 0 评论 -
C++ 容器及选用总结
转自:http://www.cnblogs.com/answeryi/archive/2011/12/16/2289811.html目录====================================================第一章 容器第二章 Vector和string第三章 关联容器第四章 迭代器第五章 算法转载 2016-03-30 12:16:16 · 1760 阅读 · 0 评论 -
C++中new与malloc的10点区别
转自:http://www.codeceo.com/article/cpp-new-malloc-10-tips.html前言几个星期前去面试C++研发的实习岗位,面试官问了个问题:new与malloc有什么区别?这是个老生常谈的问题。当时我回答new从自由存储区上分配内存,malloc从堆上分配内存;new/delete会调用构造函数/析构函数对对转载 2016-03-03 11:10:40 · 2737 阅读 · 0 评论 -
构造函数中慎用memset
写了一个小程序,工作时会跑一个大循环,在运行时发现有严重的内存泄露,内存不停增长。经过几次复查,终于找出问题所在,代码结构大概如下:struct myobj{myobj(){ memset(this,0,sizeof(myobj));} int n;//...其他成员string s;}定义了一个结构体,有众多类型成员,想初始化成员但又懒得一一赋值原创 2015-12-23 13:13:58 · 2498 阅读 · 0 评论 -
C++静态库与动态库
转自:http://www.cnblogs.com/skynet/p/3372855.html这次分享的宗旨是——让大家学会创建与使用静态库、动态库,知道静态库与动态库的区别,知道使用的时候如何选择。这里不深入介绍静态库、动态库的底层格式,内存布局等,有兴趣的同学,推荐一本书《程序员的自我修养——链接、装载与库》。什么是库库是写好的现有的,成熟的,可以复用的代码。现实中转载 2016-09-09 16:15:03 · 589 阅读 · 0 评论