C++常见问题总结

2023-05-16

C++问题总结模块

编程之路总是路漫漫其修远兮,吾将上下而求索。

1.no matching function for call to

借用CSDN某位的文章,成功修改错误
大概截图如下
源代码:
在这里插入图片描述
在这里插入图片描述

2.return type specification for constructor invalid

构造函数的返回类型规范无效
在这里插入图片描述
该函数为构造函数,无需在前面多加void

3.最好自己定义π

C中 #define PI 3.1415926
C++ const float/double PI=3.1415926

4.以为是个大问题

.cpp:(.rdata$.refptr._ZTV5Shape[.refptr._ZTV5Shape]+0x0): undefined
reference to `vtable for Shape’

意思为:Shape报错,定义有问题;
发现多写了抽象类函数的一个变量,导致出错;另外,对虚函数没有进行

virtual double MySpace()

更改为

virtual double Myapce()=0;

5.文件流指针的操作

1.读取文件到另一个文件中,最后一次读取的数据会在写入的文件中出现两次,
解决办法:注意读取文件的最后一行不加换行符

#include<iostream>
#include<fstream>
#include<stdio.h> 
#include<stdlib.h>

using namespace std;

void WriteCommodity(const char* filenamea,const char* filenameb,string t) //将文件b中的内容传递给文件a 
{
    ifstream fpb(filenameb/*,ios::in*/); //读取文件b的内容,in 为输入(读)而打开文件 
    ofstream fpa(filenamea/*,ios::out*/);  //将内容写入文件a, out 为输出(写)而打开文件 
   
     
    if(!fpb.good()&&!fpa.good())
 	{
 		cout<<"打开失败"<<endl;
	    return ;
	 }
    else if(!fpb.good())
    {
    	cout<<"打开失败"<<endl;
    	fpa.close(); //关闭文件a 
        return ;
	}
	else if(!fpa.good())
	{
		cout<<"打开失败"<<endl;
		fpb.close();  //关闭文件b 
		return ;
	}
    
    string na,ty;
	double pr;
	int nu;
	double di;
	string ds;
    
    while(!fpb.eof())
    {
    	fpb>>na>>ty>>pr>>nu>>di>>ds;
    	if(na==t)
    	  fpa<<na<<endl<<ty<<endl<<20.0<<endl<<nu<<endl<<di<<endl<<ds<<endl;
    	else
          fpa<<na<<endl<<ty<<endl<<pr<<endl<<nu<<endl<<di<<endl<<ds<<endl;
    }
    
    fpa.close();
    fpb.close();
	
	return ;
}

void WriteUser(const char* filenamea,const char* filenameb,string t) //将文件b中的内容传递给文件a 
{
    ifstream fpb(filenameb,ios::in);
    ofstream fpa(filenamea,ios::out);
    
    string ac,name,pwd;
    double bl;
    int ty;
    
    //注意,为了避免最后一次数据被读取两次,最后一行数据不要加换行符 
    
   while(!fpb.eof())   //使用eof判断会出现问题,文本的最后一次读取,读取了两次 
   // while(fpb.peek()!=EOF) //文本的最后一次读取,还是两遍 
    {
    	fpb>>ac>>name>>pwd>>bl>>ty;
    	if(ac==t) 
            fpa<<ac<<endl<<name<<endl<<pwd<<endl<<20.0<<endl<<ty<<endl;
        else
           fpa<<ac<<endl<<name<<endl<<pwd<<endl<<bl<<endl<<ty<<endl;
    }
    fpa<<"202004"<<endl<<"111"<<endl<<"222"<<endl<<20.0<<endl<<1<<endl; 
    fpa.close();
    fpb.close();
	return ;
}

int main()
{
	WriteUser("temp.txt","user.txt","202002");  //将 temp.txt 文件内容读入 user.txt 
//	WriteCommodity("commodity.txt","temp.txt");
	
	return 0;
}

2.读取文件模式总结
ios::in 为输入(读)而打开文件
ios::out 为输出(写)而打开文件
ios::ate 初始位置:文件尾
ios::app 所有输出附加在文件末尾
ios::trunc 如果文件已存在则先删除该文件
ios::binary 二进制方式

不加app模式会直接覆盖原文件数据输出

3.状态标识符
bad()
如果在读写过程中出错,返回 true 。例如:当我们要对一个不是打开为写状态的文件进行写入时,或者我们要写入的设备没有剩余空间的时候。

fail()
除了与bad() 同样的情况下会返回 true 以外,加上格式错误时也返回true ,例如当想要读入一个整数,而获得了一个字母的时候。

eof()
如果读文件到达文件末尾,返回true。

good()
判断一个文件是否成功打开

注意:打开文件之后必须关闭文件;若文件未成功打开,由于没有返回句柄,无需关闭文件;

6.不明确符号报错问题

  1. “cin” “cout” "system"等类似不明确符号报错,是由于未指明命名空间所导致的。 解决方法如下: 删除using
    namespace std; 语句后保存.cpp文件 再加上using namespace std; 语句保存.cpp文件
  2. 还有一类不明确符号报错问题,是由于项目中所使用的变量名,在命名空间中已有该变量名 解决方法有两个:
    一、把这个变量名换掉,使之不与命名空间中变量名冲突 二、指明命名空间,使编译器知道项目所使用的的命名空间

转载:本文链接:https://blog.csdn.net/weixin_44841414/article/details/106492264

7.vector容器

1.swap函数
swap操作实现交换两个容器内所有元素的功能。要交换的容器的类型必须匹配: 必须是相同类型的容器,而且所存储的元素类型也必须相同。调用了swap函数后,右操作数原来存储的元素被存放在左操作数中,反之亦然。
vector svec1(10); //vector vith 10 elements
vector svec2(24); //vector with 24 elements
svec1.swap(svec2);
执行swap后,容器svec1中存储24个string类型的元素,而svec2则存储10个元素。
关于swap的一个重要问题在于:该操作不会删除或插入任何元素,而且保证在常量时间内实现交换。由于容器内没有移动任何元素,因此迭代器不会失效。

用法
void swap( basic_string &str );
swap()函数把str和本字符串交换。例如:
string first( “This comes first” );
string second( “And this is second” );
first.swap( second );
cout << first << endl;
cout << second << endl;

————————————————

原文链接:https://blog.csdn.net/weixin_45621943/article/details/10780410

vector清空元素的三种方法

#include <iostream>
#include <vector>

using namespace std;

//STL vector的几种清空容器(删除)办法

void test()
{
    vector<int> vecnum;
    vecnum.push_back(1);
    vecnum.push_back(2);
    vecnum.push_back(3);
    vecnum.push_back(4);
    vecnum.push_back(5);
    vecnum.push_back(6);
    vecnum.push_back(7);

    //打印vector的大小和容量
    cout << "old: size = " << vecnum.size() << " ; capacity = " << vecnum.capacity() << endl;

    //1. clear(),清空元素,但不回收空间

    //vecnum.clear();

    //2. 使用 erase循环删除,结果同上

    //vector<int>::iterator it;
    //for (it = vecnum.begin(); it != vecnum.end(); )
    //{
    //    //注意使用erase()方法时,迭代不要随意的++
    //    it = vecnum.erase(it);
    //}

    //结论:erase在每次操作时,迭代器指针会整体前移1,就是每次都会移动全部数据,所以vector不适合做频繁删除的容器

    //3. 最简单的使用swap,清除元素并回收内存
    //3.1 写法一

    //vector<int>().swap(vecnum);

    //3.2 写法二
    vecnum.swap(vector<int>());

    //打印vector的大小和容量
    cout << "last: size = " << vecnum.size() << " ; capacity = " << vecnum.capacity() << endl;

}

int main()
{
    test();
    getchar();
    return 0;
}

转自:https://www.cnblogs.com/zhanggaofeng/p/9338681.html

8.文本文件出现乱码情况总结

  1. 修改文本文件编码(百度即可)

9.传引用和传类型

C++ 将某类对象传递给函数,在函数内修改类中的值,但是从函数中出来后,类对象的值没有发生改变在这里插入图片描述在这里插入图片描述

传递对对象的引用
在这里插入图片描述

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++常见问题总结 的相关文章

  • Docker镜像仓库

    Docker镜像仓库 搭建镜像仓库可以基于Docker官方提供的DockerRegistry来实现 官网地址 xff1a Docker Hub 简化版镜像仓库 Docker官方的Docker Registry是一个基础版本的Docker镜像
  • Intel 深度摄像D435i 的标定

    这个官方的标定链接 xff0c 先下载这个的pdf 文件在本地容易学习 xff1a https www intel com content www us en support articles 000032303 emerging tech
  • 树莓派Raspberry Pi上安装intel realsense 深度摄像头D435i

    全部按照官方 xff1a https github com IntelRealSense librealsense blob master doc installation raspbian md 更新系统到最新 xff0c 然后再启动 x
  • ROS应用开发入门 服务数据的定义和使用

    ROS是机器人操作系统的简称 xff0c 本文介绍ROS应用开发入门 xff0c 服务数据的定义和使用 客户端和服务端 之间通讯都使用服务数据 service data 本文先定义一个服务数据 xff0c 编译成功后 xff0c 用一个服务
  • ROS应用开发入门 tf 坐标系广播与监听的编程(python)

    ROS是机器人操作系统的简称 xff0c 本文介绍ROS应用开发入门 xff0c TF坐标系广播与监听的编程 小乌龟仿真中有2只乌龟 xff0c 键盘控制第1只乌龟走动 xff0c 2只乌龟都都广播自己的坐标 监听器听取2个乌龟的坐标 xf
  • 计算机保研面试常见问题(408数据结构简答题)

    1 什么是时间复杂度 xff1f O xff08 n xff09 的O代表了什么 xff1f 答 xff1a 时间复杂度是指执行算法所需要的计算工作量 xff0c 可以用于描述一个程序的规模 O xff08 n xff09 中的O表示的是最
  • 计算机保研面试常见问题(408操作系统简答题)

    1 操作系统的特点和功能是什么 xff1f 答 xff1a 操作系统的特点是并发 共享 虚拟 异步 其中 xff0c 并发和共享是操作系统主要的特点 操作系统的功能主要包括 xff1a 处理机管理 存储器管理 设备管理和文件管理等 操作系统
  • 计算机保研面试常见问题(408计算机网络简答题)

    1 能介绍一下OSI七层模型各层之间的功能与对应的协议吗 xff1f 答 xff1a OSI七层模型自底向上依次是 xff1a 物理层 数据链路层 网络层 运输层 会话层 表示层 应用层 各层的功能与相应的协议有 xff1a 物理层 xff
  • 从高考到程序员

    记得当年进入考场的时候也是志气满满 xff0c 心里念叨着一定要考上自己理想的大学 xff0c 光宗耀祖 当时坐在学校安排的bus上向考场的方向行进 xff0c 看到路边的交警叔叔 xff0c 情不自禁的喊了一声 xff0c 交警大哥辛苦了
  • 【姿态估计】Pose estimation algorithm 之 Robust Planar Pose (RPP)algorithm

    The RPP algorithm gives a more stable tracking less jitter than ARToolKit 39 s pose estimation algorithm The robust pose
  • STM32中,关于中断函数调用全局变量的问题

    本人菜鸟小白一枚 xff0c 第一次记录自己在学习中遇到的问题 xff0c 也当是与各位交流交流 首先是问题的描述 xff1a 硬件单片机型号 xff0c STM32F103VET6 xff0c IDE xff1a keil 5 想通过它实
  • 关于FreeRTOS操作系统遇到的一些小问题

    1 故障描述 今天在学习FreeRTOS操作系统关于计数量信号实验这一块的时候遇到了一个非常有意思的实验现象 就是程序任务的启动流程都是设置正确的 xff0c 但是两任务会有一个任务进不去 程序代码如下 include 34 bsp con
  • geometry_msgs::PointStamped

    geometry msgs PointStamped geometry msgs PointStamped File geometry msgs PointStamped msg PointStamped代表了一个带有参考坐标系和时间戳的点
  • 2030年的人工智能与生活(AI and Life in 2030)

    作者 xff1a Anqi 链接 xff1a https zhuanlan zhihu com p 22308870 来源 xff1a 知乎 著作权归作者所有 商业转载请联系作者获得授权 xff0c 非商业转载请注明出处 第一部分 xff1
  • FreeRTOS学习-day01

    FreeRTOS学习 day00 xff08 废话篇 xff09 书籍是 xff1a 使用两本书 正点原子 和 野火 野火 FreeRTOS 内核实现与应用开发实战 基于STM32 教程 正点 FreeRTOS源码与应用 STM32F1 F
  • 要写好综述类论文?这几个点你需要注意

    一 引 言 不管是哪种学科的哪种研究 xff0c 文献综述必不可少 文献综述具有承上启下的作用 xff0c 是学术研究和学术论文写作的一个重要环节 通过文献综述 xff0c 我们可以了解相关领域的研究现状 xff0c 在前人研究的基础上确定
  • 文献综述难点解析

    文献综述难在三点 xff1a 在研究的不同阶段 xff0c 读文献的目的是不同的 xff0c 如何搜索 如何选择文献 如何阅读 如何做笔记等的策略也是不同的 xff0c 需要我们不断换挡 xff1b 综合 xff08 synthesizin
  • gitee团队合作,上传文件到别人的Gitee仓库

    首先要确保在别人的Gitee项目中 项目创建人可以通过邀请拉其他人进入Gitee项目中 下面开始上传 第一步 xff0c 在任意位置 xff0c 基本上选择桌面 新建一个文件夹 xff0c 在里面点击右键 xff0c 选择 Git Bash
  • ROS教程(四):RVIZ使用教程(详细图文)

    ros教程 xff1a rviz使用教程 文章目录 前言一 RVIZ介绍1 数据类型介绍2 界面介绍 二 发送基础形状至RVIZ xff08 C 43 43 xff09 1 创建程序包2 创建节点3 编辑代码如下 xff08 示例 xff0
  • 基于二维激光雷达的三维激光扫描系统的设计与实现

    CSDN话题挑战赛第2期 参赛话题 xff1a 学习笔记 学习之路 xff0c 长路漫漫 xff0c 写学习笔记的过程就是把知识讲给自己听的过程 这个过程中 xff0c 我们去记录思考的过程 xff0c 便于日后复习 xff0c 梳理自己的

随机推荐