C++笔记1

版权声明:本文为博主原创文章,未经博主允许不得转载。 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++ [编译选项] 源文件名
编译选项 含义
-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( )把中文括起来

猜你喜欢

转载自blog.csdn.net/u012736685/article/details/84943237