1.gets_s函数
定义在头文件<stdio.h>中
char *gets(char *str);
char *gets_s(char *str,rsize_t n);
从标准输入设备读入字符,直到出现换行符或者文件尾出现,最多能够只将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(!file.eof())
{
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;
5.new和delete相关用法
new运算符使用一般格式如下:
new type[初值];
new type(a);
new type;
delete运算符使用的一般格式为:
delete [] 指针变量;
int *p = new int[5];
int *p = new int(10);
|