版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012736685/article/details/84943237
文章目录
一、概述
C++是一种静态数据类型检查的、支持多种编程范式(面向过程与面向对象等)的通用程序设计语言。
1、应用
C++在某些领域(比如,操作系统编程、游戏开发、电信金融业务、服务器端开发等)仍具有不可替代的优势。
2、重点
- C子语言——C++支持几乎全部的C语言功能,在语法上与C语言仅有细微的差别;
- 面向对象的C++——类,封装、继承和多态;
- 泛型编程语言——可以编写完全一般化并可重复使用的算法,其效率与针对特定数据类型而设计的算法的效率相近。
- STL——将容纳数据的容器、访问数据的迭代器、以及对数据进行处理的算法非常优雅地整合在一起,其效率虽然比专门设计的C++代码稍低,但其安全性与规范性大受欢迎,在业界得到了广泛的应用
3、程序
C++程序=预编译指令+程序代码+注释
cpp文件执行的过程
- 编译:通过编译器将 源文件(.cpp) ==》目标文件(.obj)
- 链接:通过链接器将 目标文件(.obj)+标准库目标文件(.lib) ==》可执行文件(.exe)
程序 = 数据结构(描述数据) + 算法(处理数据)
tip1:
当我们在Visual Studio中执行某个程序时,如果这个程序在执行过程中不需要与用户进行交互,那么它执行时打开的DOS窗口会在其执行完毕后立即关闭。如果这个程序有结果输出,我们甚至来不及看清程序的输出结果。一个程序执行完了,连输出结果都来不及看清这怎么行呢?
==》解决方法:在程序的主函数返回之前加上一条“system(“pause”);”
int main()
{
// …
// 让程序在结束之前暂停
system("pause");
return 0;
}
4、IDE(集成开发环境,Integrated Development Environment)
一般包括代码编辑器、编译器、调试器和图形用户界面工具等,是集代码编写功能、分析功能、编译功能、调试功能于一体的开发软件套装。
- Windows:VS、Qt
- Linux/UNIX:vi(编写源代码)+GCC(编译)+GDB(调试)
- gcc 常用操作:
- 格式:g++ [编译选项] 源文件名
- gcc 常用操作:
编译选项 | 含义 |
---|---|
-c | 只编译,而不链接成为可执行文件。编译器将输入的.cpp源代码文件编译生成以.o为后缀的目标文件 |
-o 输出文件名 | 指定输出文件的名称。若不指定,则生成默认的可执行文件:Windows——a.exe、Linux/UNIX——a.out |
-g | 若要对源码调试必选——用于产生调试工具(例如,GDB )所必需的符号信息 |
-O | 编译器将对程序进行优化编译、链接。可提高可执行文件的执行效率,但编译、链接的速度相应变慢 |
-I 目录名 | 指定GCC的附加头文件目录。在使用第三方库时常用 |
// 将HelloWorld.cpp这个C++源文件优化编译
// 并链接成了一个可执行文件 HelloWorld
g++ -O -o HelloWorld HelloWorld.cpp
// 运行
./HelloWorld
二、基本语法
1、输入、输出
流(stream):在C++程序中,我们将这种数据在程序和外部对象(键盘、屏幕等)之间的流动。
C++标准库中已经预先定义了4个最基本的输入/输出流(I/O)对象:
- cin——通过提取(get-from)符“>>”从cin中提取用户通过 键盘输入的数据;
- cout——通过插入(put-to)符“<<”向cout中插入程序内的数据;
- cerr——输出程序错误信息;
- clog——输出日志信息;
注:箭头的方向形象地代表了数据流动的方向;
2、输出格式控制
操纵符大都定义在头文件中。
操 纵 符 | 作 用 |
---|---|
dec | 十进制显示数值数据(默认设置) |
hex | 十六进制显示数值数据。如果同时在输出流中插入一个showbase操纵符,还可以同时输出十六进制数值的0x前缀 |
oct | 八进制显示数值数据 |
endl | 插入换行符,并刷新输出流缓冲区 |
setprecision(n) | 设置浮点数的输出精度为n。默认情况:浮点数中小数点前后所有数字的个数。fixed操纵符:设置小数点后的数字的个数 |
setw(n) | 设置输出的每个数据的显示宽度 |
// fixed操纵符:固定的小数位数输出小数数值。
// setprecision()设置保留的小数点后有效数字位数,
// 可得“保留小数点后两位有效数字”的输出格式
cout<<fixed<<setprecision(2)<<1.23456<<endl;
==》输出:1.23
3、读/写文件
- 头文件:
- ifstream(input file stream):从文件中读取数据;
- ofstream(output file stream)将数据输出到文件;
#include <iostream>
#include <fstream>
using namespace std;
int main(int argc, char *argv[])
{
int nYear, nMonth, nDate;
// 创建输入文件流对象fin,并尝试打开Data.txt文件
ifstream fin("Date.txt");
if(fin.is_open())
{
// 用提取符“>>”从文件输入流对象fin中读取文件中的数据
fin>>nYear>>nMonth>>nDate;
cout<<"文件中记录的日期是:"<<nYear<<"-"<<nMonth<<"-"<<nDate<<endl;
fin.close();
}
else {
cout<<"无法打开文件并进行读取"<<endl;
}
cout<<"请输入新日期(例如:1995 5 5):"<<endl;
cin>>nYear>>nMonth>>nDate;
// 创建输出文件流对象fout,并尝试打开Data.txt文件,
// 如果这个文件不存在,则创建一个新文件并打开
ofstream fout("Date.txt");
if(fout.is_open())
{
fout<<nYear<<" "<<nMonth<<" "<<nDate;
fout.close();
}
else
{
cout<<"无法打开并进行写入"<<endl;
}
return 0;
}
出现的问题:
- qt creator——“error c2001: 常量中有换行符”
- 解决方案
- 将报错的那个源文件在记事本中打开,然后保存一下。==》不报错
- 若中文全是乱码,把中文用QStringLiteral( )把中文括起来