IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C++易混淆及未掌握知识点总结 -> 正文阅读

[C++知识库]C++易混淆及未掌握知识点总结

1.gets_s函数

定义在头文件<stdio.h>中

char *gets(char *str);//在c11标准中移除了
char *gets_s(char *str,rsize_t n);//c11中新添加 n代表the size of str

从标准输入设备读入字符,直到出现换行符或者文件尾出现,最多能够只将n-1个字符写入str指向的数组,并始终写入终止的空字符。
返回值:如果操作成果,返回str,否则failure.

2.fstream的相关用法

使用fstream对txt文件进行读取的时候,假如txt文件内部是如下结构:

系数p  指数
7     0
3     1
9     8

那么对它进行读取,可以使用如下操作(仅展示关键代码片段)

typedef struct PNode{
	float coef;//系数
	int expn;//指数
	struct PNode *next;
}PNode,*Polynomial;
char filename[20] = {0};//对字符数组进行初始化
string head_1,head_2;
cout<<"请输入读取的文件名(绝对路径)"<<endl;
gets_s(filename, 19);
fstream file;
file.open(filename);
if(!file)
{
	cout<<"未找到相关文件,无法打开"<<endl;
}
file>>head_1>>head_2;//读取表头
/*每执行一次while循环,就读入一行数据的值*/
/*特别要注意的是,txt文件中最后一行数据下面不要空行,不然可能会输出-842150451*/
while(!file.eof())
{
	//PNode代表一个链表结点
	s = new PNode;
	file>>s->coef>>s->expn;//读取元素值
	...
}
...
file.close();

3.如何获取变量类型并输出

需要引入头文件 #include< typeinfo >

#include <iostream>
#include <typeinfo>
using namespace::std;
int main()
{
	int a = 1;
	char b = 'c';
	int *c = &a;
	cout<<typeid(a).name()<<endl;
	cout<<typeid(b).name()<<endl;
	cout<<typeid(c).name()<<endl;
	return 0;
}

结果输出:
int
char
int *

4.define用法详解

使用#define 定义标识符的一般形式为:

#define 标识符 常量//特别注意,后面没有分号
#define MAX 100
#define PI 3.1415926

#define 称为宏定义,标识符所定义的宏名,简称宏,

#define与const的区别

  • 编译器处理不同
    宏定义在预处理阶段展开(在编译时,用到宏定义的值的地方,用宏定义常量替换),不能对宏定义调试,定义的标识符不占内存,只是一个临时的符号,预编译后这个符号就不存在了(预编译所执行的操作就是代码文本的替换工作,预编译完成才会进行正式的编译);
    const常量是一个运行时的概念,在程序运行时使用
  • 存储方式不同
    宏定义是直接替换,不会分配内存,存储于程序的代码段中;
    const常量要进行内存分配;
  • 类型和安全检查不同
    宏定义是字符替换,没有数据类型的区别,同时这种替换没有类型安全检查,可能产生边际效应等错误;
    const常量是常量的声明,有类型区别,需要在编译阶段进行类型检查
  • 定义后能否取消
    宏定义可以通过==#undef==来使之前的宏定义失效
    const常量定义后将在定义域内永久有效
#define N 20;
#undef N 20;//取消宏定义后,N无效了

5.new和delete相关用法

new运算符使用一般格式如下:

new type[初值];//开辟一个存放type类型数据的数组,其大小为a
new type(a);//开辟一个存放type类型数据的存储空间,其初值为a
new type;//如 int *a = new int,开辟一个存放整数的存储空间,并将其地址返回给a

delete运算符使用的一般格式为:

delete [] 指针变量;
//创建一个有五个元素的int型数组,返回首元素的地址给指针p
int *p = new int[5];
//常见一个int型指针,指向值为10的int型数据
int *p = new int(10);
  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-09-19 07:48:45  更:2021-09-19 07:49:43 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 23:20:15-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码