![](https://img-blog.csdnimg.cn/2019092715111047.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
C++编程语言
系统学习C++过程中遇到的各种问题与解决
DinDin1995
这个作者很懒,什么都没留下…
展开
-
错误:Char 26: fatal error: reference to non-static member function must be called
主要原因是我使用了函数指针,而函数指针所指函数须得是静态才行class Solution {public: vector<int> exchange(vector<int>& nums) { return ReOrder(nums,iseven); } vector<int> ReOrder(vector<int>& nums,bool (*func)(int)) { ...... }原创 2020-05-15 11:14:38 · 2267 阅读 · 0 评论 -
【C++】去除字符串string中的空格(两头空格、所有空格)
去除首尾空格:std::string& trim(std::string &s) { if (!s.empty()) { s.erase(0,s.find_first_not_of(" ")); s.erase(s.find_last_not_of(" ") + 1); } return s;}去除所有空格:void trim(string &s){ int index = 0; if(!s.empty()原创 2020-05-14 16:56:12 · 22860 阅读 · 0 评论 -
【C/C++】字符串string与字符数组char*的相互转换
1 string类型转换为字符数组( string —> char*) :(1)data()string str = "abc";char* p = (char*) str.data();(2)c_str()string str = "adc";char *p = (char*) str.c_str();但是!!!!!最好不要这样,c_str()返回的是一个临时指针,不能对其进行操作,应该这样用:char c[20]; string s="1234"; strcpy(c,s.c原创 2020-05-14 16:37:30 · 2545 阅读 · 0 评论 -
【C++】if-else编程陷阱
前两天帮学妹调试代码,总结一个关于if-else的注意点,源代码记不住了,例如有如下代码:if(a>10){ cout<<"a大于10"<<endl;}else if(a>5){ cout<<"a大于5"<<endl;}else{ cout<<"其他情况"<<endl;}如果a=11,以前认为只会输出:a大于10但其实会输出:a大于10a大于5原因在于判断条件有重叠部分,而a取11正好就落在那原创 2020-05-14 10:47:29 · 322 阅读 · 0 评论 -
【C++】获取指定文件夹下的文件名列表,读取多个子文件追加写入一个新的文件
参考:https://blog.csdn.net/HolaMirai/article/details/53307518实现功能1、读取指定文件夹下的全部文件名列表,保存在一个vector中2、根据文件名依次逐行读取文件中的内容,以追加的方式保存在一个新的文件中,完成多个单文件的内容集合代码实现#include <iostream>#include <fstream&g...原创 2020-04-21 19:23:10 · 653 阅读 · 0 评论 -
C++中print函数的模板版本
接受一个数组的引用,能处理任意大小、任意元素类型的数组#include<iostream>#include<string>using namespace std;template<typename T,size_t N>void print(const T (&a)[N]) { //接受一个数组的引用,能处理任意大小、任意元素类型的数组 ...原创 2020-03-21 10:15:29 · 905 阅读 · 0 评论 -
C++类的继承中:子类构造函数初始化从父类继承过来的成员数据
1. 可行方法:#include <iostream>#include <string>using namespace std;//父类class A {public: string s;};//子类class B :public A { B(string str){ A::s = str; //ok this->s = str;/...原创 2020-03-20 13:46:10 · 1601 阅读 · 2 评论 -
C++在容器中放置有继承关系的对象和指针区别
《C++ Primer 5》15.28和15.29两题1 .h头文件:包括父类Quote和子类Bulk_quote的定义bookQuote.h:#pragma once#include<iostream>#include<string>using namespace std;class Quote { //friend ostream& ope...原创 2020-03-19 15:49:42 · 276 阅读 · 0 评论 -
C++Primer5及习题集错误修正汇总(VS环境,持续更新)
本书阅读至今只发现一处小错误,不得不再次吹一波大佬的书! 【习题集】第14章,练习14.18,给String类定义关系运算符时,有关<=运算符,有小错一处。 bool operator<=(const String &s1,const String &s2){ return strcmp(s1.str, s2.str)<0; //小于号错} ...原创 2020-03-14 18:48:05 · 459 阅读 · 0 评论 -
C++内存分区
C++的内存划分为栈区、堆区、全局区/静态区、字符串常量和代码区。1. 栈区:由系统进行内存的管理。说明:主要存放函数的参数以及局部变量。栈区由系统进行内存管理,在函数完成执行,系统自行释放栈区内存,不需要用户管理。整个程序的栈区的大小可以在编译器中由用户自行设定,默认的栈区大小为3M。2. 全局/静态区:全局、静态数据存放在一起的,初始化的全局变量和静态变量是在一起的。未初始化的全局变...原创 2020-03-08 16:46:30 · 130 阅读 · 0 评论 -
C++中的回调函数(callback)
回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。通俗一点,回调函数就是在两个独立函数或者独立类通信的通道。初级版: #include <stdio.h> ...原创 2020-02-28 10:03:40 · 501 阅读 · 0 评论 -
C++ Primer5 练习5.12:编程统计含有两个连续字符(ff、fl、fi)的字符序列的数量
一个字符只被统计一次。#include<iostream>using namespace std;int main(){ unsigned int ffCnt = 0, flCnt = 0, fiCnt = 0; char ch, prech = '\0'; // 创建char类型字符ch,prech,其中prech被初始化为'\0' cout << "请输入一...原创 2020-02-28 10:00:43 · 620 阅读 · 0 评论 -
范围for循环过程中用&修改元素
一个简单的注意点,共勉:将字符串中的大写字母改成小写(范围for循环,做不到):void changeToLower(string &s){ for (auto i : s){ if (i >= 'A'&&i <= 'Z'){ i += 32; } }}将字符串中的大写字母改成小写(范围for循环,做得到):与上例唯一的区别在于au...原创 2020-02-28 09:58:14 · 460 阅读 · 0 评论 -
C++资料整理(持续更新)
一件事,1000人想去做,100人开始做了,最终,只有1个人坚持到了最后。Github干货系列:C++资源集合GitHub 上10个最有意思的项目合集这些C++的练手项目,相当于你2年的工作经验,拿走不谢c++学习论坛推荐 强力推荐50个C/C++源代码网站C++服务器项目概述C++开源项目2018C/C++学习路线图,内附完整自学路线+视频+面试130 个相见恨晚的超实用网站,...原创 2020-02-22 17:09:36 · 262 阅读 · 0 评论 -
问题解决:VS报错:The build tools for v140 (Platform Toolset = 'v140') cannot be found
从网上下载了一个GitHub上的C++项目,使用VS2013打开时报错,报错信息如下:错误 1 error MSB8020: The build tools for v140 (Platform Toolset =‘v140’) cannot be found. To build using the v140 build tools, pleaseinstall v140 build to...原创 2020-02-21 08:17:03 · 1437 阅读 · 0 评论 -
实操:main(int argc,char ** argv) 输出main函数的参数
C++Primer5第6.24题题目:编写一个main函数,接收两个实参,并将实参连接成string输出。代码:#include<iostream>#include<string>using namespace std;int main(int argc, char* argv[]){ //char* argv[]等同于char** argv string s...原创 2020-01-02 17:16:57 · 305 阅读 · 0 评论 -
问题解决:C++使用while(cin>>ch)时键盘输入回车后仍难以终止程序运行
终止的诀窍就是:ctrl+z,ctrl+z,ctrl+z!!!在VS2013中输入如下C++代码:功能是统计用户输入的字符个数#include<iostream>using namespace std;int main(){ char ch; unsigned num=0; cout << "请输入一段文本:" << endl; while (c...原创 2019-12-24 17:29:24 · 1428 阅读 · 0 评论 -
【C++】查找算法和排序算法
一、 公共知识1. 查找技术(1)顺序查找查找过程:从线性表的第一个元素开始,逐个将线性表中的元素与被查元素进行比较,如果相等,则查找成功;若整个线性扫描结束,仍未找到与被查元素相等的元素,则表示线性表中没有被查元素,查找失败。前提要求:线性表查询次数:最少1次,第一个元素就是要查的元素;最多n次,最后一个元素才是要查的元素,或者查到最后都没发现要查的元素;因此平均情况是n/2...原创 2019-06-03 21:32:00 · 429 阅读 · 0 评论 -
VS2013关于C++ Primer5 的3.42题报错
练习3.42:编写一段程序,将含有整数元素的数组的vector对象拷贝给一个整型数组。#include<iostream>#include<vector>using namespace std;int main(){ vector<int> v; const int sz = 10; //常量sz作为vector对象的容量 srand((u...原创 2019-12-17 15:45:03 · 139 阅读 · 0 评论 -
VS2013 注释多行与取消多行注释快捷键
注释: 先CTRL+K,后CTRL+C取消注释: 先CTRL+K,后CTRL+U原创 2019-12-02 13:00:55 · 447 阅读 · 0 评论 -
vs下程序运行结果框闪退的解决方案
在程序末尾添加语句:system(“pause”); 再加上头文件#include <stdlib.h>,这样运行结果后就会显示结果,并提示“请按任意键继续”原创 2019-11-25 09:18:09 · 256 阅读 · 0 评论 -
VS2013+OpenCV2.4.11安装配置
1.官网下载OpenCV2.4.11:https://opencv.org/releases.html选择视窗,下载得到.exe可执行文件2.放到合适地点,双击下载好的可执行文件提取内容;3.在系统环境变量下新建系统变量:OpenCV,E:\OpenCV\opencv\build找到环境变量Path:添加%OPENCV%\x86\vc12\bin4.新建opencv2411.pro...原创 2019-08-07 15:54:50 · 573 阅读 · 0 评论 -
Visual Studio 2013 加载符号过慢问题解决
加载符号问题打开VS的【工具】-【选项】-【调试】-【符号】,如下图:1、先取消勾选“Microsoft符号服务器”2、点击“清空符号缓存”3、重启Visual Studio...转载 2019-08-07 13:09:12 · 329 阅读 · 0 评论 -
vs2013运行c语言出现:无法查找或打开 PDB 文件问题解决
vs2013运行c语言出现:无法查找或打开 PDB 文件。“ConsoleApplication1.exe”(Win32): 已加载“C:\Users\hp\Documents\Visual Studio 2013\Projects\ConsoleApplication1\Debug\ConsoleApplication1.exe”。已加载符号。“ConsoleApplication1.exe...转载 2019-08-04 10:32:15 · 2167 阅读 · 1 评论 -
使用VS2013进行第一个C++程序编写方法 (附:设置背景护眼色)
使用VS2013编写第一个C++程序:共6个小步骤:1.打开VS2013,选择新建—>项目:2.选择C++,然后选择空项目,当然本项目依然从打印Hello World开始,所以名称输入“HelloWorld”,点击确定。3.在解决方案中的源文件文件夹下单击鼠标右键,选择添加—>新建项。4.如下图所示,文件名称改成Hello.cpp,点击确定。5...原创 2019-08-04 09:56:12 · 563 阅读 · 0 评论