当前位置: 首页 > news >正文

在 Ubuntu 下编写 C++

在 Ubuntu 下编写 C++

在 Ubuntu 上面编写 C++,本章节内容主要介绍在 Ubuntu 在终端窗口下使用 vi/vim 编辑一
个 C++源文件。通过编写最简单的示例“Hello,World!”。带领大家学习如何在 Ubuntu 终端下编
辑和编译 C++。这里要求大家会在 Ubuntu 上使用 vi/vim,也就是要求大家有一点 Ubuntu 入门
的基础。如果没有这些基础也是可以拷贝 C++的代码到 Windows 上使用像 Dev-C++这种轻量级
C/C++ 集成开发环境(IDE)进行编写和编译。

C++简介

C++ (c plus plus)是一种静态类型的、编译式的、通用的、大小写敏感的、不规则的编程
语言,支持过程化编程、面向对象编程和泛型编程。C++ 被认为是一种中级语言,它综合了高
级语言和低级语言的特点。C++ 是由 Bjarne Stroustrup 于 1979 年在新泽西州美利山贝尔实验
室开始设计开发的。C++ 进一步扩充和完善了 C 语言,最初命名为带类的 C,后来在 1983 年
更名为 C++。C++ 是 C 的一个超集,事实上,任何合法的 C 程序都是合法的 C++ 程序。
截止 2020 年,在 2017 年发布 C++17,已经是第五个 C++标准了。我们也见过或者听过 C++98,
这样的 C++标准,也就是 1998 年发布的 C++,所以叫 C++98,是 C++的第一个标准。

学习 C++我们要理解概念,而不是深究语言技术细节。我们只要带着第二章的 C++基础概念,学习 Qt 或者写 C++会有一定的帮助

C++环境设置

为了写这份教程,作者也是从新装了一个 Ubuntu18.04。从头搭建环境。我们先配置软件源
的服务器地址为阿里云的地址。这样我们可以从国内去获取软件源,下载速度会更快。

我们要在 Ubuntu 编写 C++程序,那么需要有能编写代码的文本编辑和 C++编译器。在新
装的 Ubuntu 环境里,编译 C 语言的 GCC 没有安装,编译 C++的 G++也没有安装。执行下面的
执指令安装编译 C 语言和 C++的环境。

sudo apt-get install gcc g++ 
sudo apt-get install lsb-core lib32stdc++6 // 安装其他库 

安装完成后,可以使用下面的指令来查看安装的 gcc 和 g++的版本。

g++ -v 
gcc -v 

在这里插入图片描述

编写一个简单的 C++程序

在终端输入下面的指令,首先我们创建一个 C++目录,然后使用 cd 指令进入 C++目录。
再创建01_hello_world目录,进入01_hello_world目录,然后使用vi指令编辑01_hello_world.cpp。

mkdir C++ // 创建一个 C++目录。 
cd C++ // 进入创建的 C++目录。 
mkdir 01_hello_world // 创建一个 01_hello_world 目录 
cd 01_hello_world // 进入 01_hello_world 目录下。 
vi 01_hello_world.cpp // 编辑 cpp 文件,拷贝下文的内容 

在这里插入图片描述
拷贝下面的内容到 01_hello_world.cpp。

1 #include <iostream> 2 using namespace std; 3 int main() 4 { 5 cout << "Hello, World!" << endl; 6 return 0; 7 } 

第 1 行,C++ 语言定义了一些头文件,这些头文件包含了程序中必需的或有用的信息。上
面这段程序中,包含了头文件 。

第 2 行,using namespace std; 告诉编译器使用 std 命名空间。命名空间是 C++ 中一个相
对新的概念。其中 std 就是 C++里的标准命名空间,也就是标准库里写好的了,我们可以直接
调用。

第 3 行,int main() 是主函数,程序从这里开始执行。

第 5 行,cout << “Hello World”<<endl; 会在屏幕上显示消息 "Hello World"并换行。“<<”
是运算符,endl 是换行语句。

第 6 行,return 0; 终止 main( )函数,并向调用进程返回

执行下面的语句进行编译和运行这个简单的 C++程序。
g++ 01_hello_world.cpp -o 01_hello_world // 使用 g++编译。-o 后面加的是输出的目标文件。
./01_hello_world // 在终端下执行,打印"Hello, World!"并换行。

在这里插入图片描述

我们可以拓展一下,如何输出多行。可以像下面一样无限加下去。其中我们发现打印了第一个 Hello,world!后也换行了,因为使用了“\n”。C++中可以使用 C 语言的语句,C++是 C 语言的超集。

1 #include <iostream> 2 using namespace std; 3 int main() 
4 { 5 cout << "Hello, world!\n" << "Hello, world!" << endl; 6 return 0; 7 } 

第 5 行,我们在里面再加用“<<”插入运算符(重载运算符)再插入一句“Hello, world!”打印,这样终端上就打印了两行“Hello, world!”。

相关文章:

在 Ubuntu 下编写 C++

在 Ubuntu 下编写 C 在 Ubuntu 上面编写 C&#xff0c;本章节内容主要介绍在 Ubuntu 在终端窗口下使用 vi/vim 编辑一 个 C源文件。通过编写最简单的示例“Hello,World&#xff01;”。带领大家学习如何在 Ubuntu 终端下编 辑和编译 C。这里要求大家会在 Ubuntu 上使用 vi/vim…...

Linux主要目录的意思

Linux目录的意思 文章目录Linux目录的意思bin目录&#xff08;命令目录&#xff09;&#xff1a;二进制目录&#xff0c;二进制是可以直接执行的机器码&#xff0c;里面存放着可以执行的命令&#xff1b;bin目录右下角有个箭头类似于Windows的快捷方式 sbin目录&#xff1a;系…...

启动golang项目编译的exe可执行文件获取windows管理员权限(UAC)

背景&#xff1a; go代码启动以后里面涉及到修改ip地址等操作&#xff0c;需要管理员权限。打包好的exe文件双击执行默认是没有管理员权限的&#xff0c;那么修改ip就会提示需要管理员权限。 解决方法1&#xff1a;右键以管理员权限运行exe文件 解决方法2&#xff1a;编译exe…...

Springboot怎么快速集成Redis?

前言其实在Springboot中集成redis是一个非常简单的事情&#xff0c;但是为什么要单独输出一篇文章来记录这个过程呢&#xff1f;第一个原因是&#xff0c;我记性不是太好&#xff0c;这次把这个过程记录下&#xff0c;在新的项目搭建的时候或者需要在本地集成redis做一些其他相…...

COM技术简单介绍

COM (Component Object Model) 是一种面向对象的编程技术&#xff0c;它在 Windows 操作系统中广泛使用。COM 提供了一种标准的方法来创建和使用可重用的软件组件&#xff0c;这些组件可以通过不同的编程语言和应用程序进行访问和使用。 COM 技术的主要特点包括&#xff1a; 组…...

NetworkMiner网络取证分析工具(26)

预备知识 NetworkMiner是一款windows平台下开放源代码的网络取证分析工具&#xff0c;同时也是一款比较好的协议分析工具&#xff0c;它通过数据包嗅探或解析PCAP 文件能够检测操作系统&#xff0c;主机名和网络主机开放的端口。 除了能够进行基本的数据包抓取分析N…...

Lombok 常用注解

文章目录简介MAVEN 依赖常用的注解1. Data 注解 :2. Setter 注解&#xff1a;3.Getter 注解&#xff1a;4.Log4j or Slf4j 注解5.NoArgsConstructor注解&#xff1a;6.AllArgsConstructor注解&#xff1a;7.RequiredArgsConstructor注解:8.Builder注解&#xff1a;9.Cleanup注解…...

SAP 生产订单和成本收集器在核算上的主要区别

生产订单&#xff1a; 特点&#xff1a; 1、 按照批次进行核算 2、 只有完全完工&#xff0c;才能够进行差异分析&#xff0c;分析差异来源。 目标制造费用&#xff1a;按照工单创建确认的作业数量*计划作业价格的乘积得到&#xff1b; 实际制造费用&#xff1a;按照作业确认…...

Nginx-http-flv-module流媒体服务器搭建+模拟推流+flv.js在前端html和Vue中播放HTTP-FLV视频流

场景 Windows上搭建Nginx RTMP服务器并使用FFmpeg实现本地视频推流&#xff1a; Windows上搭建Nginx RTMP服务器并使用FFmpeg实现本地视频推流_win nginx-rtmp最新版_霸道流氓气质的博客-CSDN博客 Vue中使用vue-video-player和videojs-flash插件实现播放rtmp视频文件流&…...

【大数据处理与可视化】一 、大数据分析环境搭建(安装 Anaconda 3 开发环境)

【大数据处理与可视化】一 、大数据分析环境搭建&#xff08;安装 Anaconda 3 开发环境&#xff09;实验目的实验内容实验步骤一、下载Anaconda安装包二、安装Anaconda3三、验证Anaconda是否安装成功四、Jupyter Notebook的使用1. 启动Anaconda自带的Jupyter Notebook2. 在code…...

Python3-输入和输出

Python3 输入和输出 输出格式美化 Python两种输出值的方式: 表达式语句和 print() 函数。 第三种方式是使用文件对象的 write() 方法&#xff0c;标准输出文件可以用 sys.stdout 引用。 如果你希望输出的形式更加多样&#xff0c;可以使用 str.format() 函数来格式化输出值。…...

Java后端通用接口设计

1、接口的响应要明确表示接口的处理结果 为了将接口设计得更合理&#xff0c;我们需要考虑如下两个原则&#xff1a; 对外隐藏内部实现。即服务A调用服务B&#xff0c;如果服务B异常&#xff0c;但是我们不要直接把服务B的状态码、错误描述直接暴露给用户&#xff1b; 设计接…...

万字长文带你走进MySql优化(系统层面优化、软件层面优化、SQL层面优化)

文章目录系统层面优化采用分布式架构使用缓存使用搜索引擎软件层面优化调整 MySQL 参数配置定期清理无用数据创建索引创建索引普通索引唯一索引全文索引组合索引空间索引主键索引外键索引索引前缀适合创建索引的场景不适合创建索引的场景优化表结构分库分表SQL优化explain执行计…...

云原生安全2.X 进化论系列|云原生安全2.X未来展望(4)

随着云计算技术的蓬勃发展&#xff0c;传统上云实践中的应用升级缓慢、架构臃肿、无法快速迭代等“痛点”日益明显。能够有效解决这些“痛点”的云原生技术正蓬勃发展&#xff0c;成为赋能业务创新的重要推动力&#xff0c;并已经应用到企业核心业务。然而&#xff0c;云原生技…...

认识进程 -了解进程调度

前言 本篇通过介绍操作系统OS的重要功能&#xff0c;了解并发并行, 了解操作系统的一项重要功能 “进程管理” , 通过了解进程管理认识进程是操作系统资源分配的基本单位 ,如有错误&#xff0c;请在评论区指正&#xff0c;让我们一起交流&#xff0c;共同进步&#xff01; 文章…...

第十届省赛——7外卖店优先级

题目&#xff1a;“饱了么”外卖系统中维护着N 家外卖店&#xff0c;编号1~N。每家外卖店都有一个优先级&#xff0c;初始时(0 时刻) 优先级都为0。每经过1 个时间单位&#xff0c;如果外卖店没有订单&#xff0c;则优先级会减少1&#xff0c;最低减到0&#xff1b;而如果外卖店…...

做自动化测试选择Python还是Java?

今天&#xff0c;我们来聊一聊测试人员想要进阶&#xff0c;想要做自动化测试&#xff0c;甚至测试开发&#xff0c;如何选择编程语言 前言 自动化测试&#xff0c;这几年行业内的热词&#xff0c;也是测试人员进阶的必备技能&#xff0c;更是软件测试未来发展的趋势。特别是…...

C#基础之基础语法(一)

总目录 文章目录总目录前言一、C#简述1 C#是什么&#xff1f;2 .Net平台3. C# 和.Net的关系4. 集成开发环境&#xff08;IDE&#xff09;二、控制台应用程序1. 常用代码2.注意事项三、基础语法1.编写C#代码注意事项2.C#注释2. 变量&标识符&关键字4. 变量&#xff0c;字…...

【JVM篇1】认识JVM,内存区域划分,类加载机制

目录 一、JVM内存区域划分 ①程序计数器(每个线程都有一个) ②栈&#xff1a;保存了局部变量和方法调用的信息(每一个线程都有一个栈) 如果不停地调用方法却没有返回值&#xff0c;会产生什么结果 ③堆(每一个进程都有一个堆&#xff0c;线程共享一个堆) 如何区分一个变量是…...

CHAPTER 5 文件共享 - FTP

文件共享 - FTP1 FTP1.1 传输方式1. ASCII传输方式2. 二进制传输模式3. 两种传输方式的区别1.2 支持的模式1. 主动模式(PORT)2. 被动模式(PASV)3. 如何选择4. 为什么绝大部分互联网应用都是被动模式&#xff1f;1.3 搭建FTP服务器&#xff08;使用vsftpd&#xff09;1. 安装软件…...

基于大模型的 UI 自动化系统

基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...

基础测试工具使用经验

背景 vtune&#xff0c;perf, nsight system等基础测试工具&#xff0c;都是用过的&#xff0c;但是没有记录&#xff0c;都逐渐忘了。所以写这篇博客总结记录一下&#xff0c;只要以后发现新的用法&#xff0c;就记得来编辑补充一下 perf 比较基础的用法&#xff1a; 先改这…...

学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1

每日一言 生活的美好&#xff0c;总是藏在那些你咬牙坚持的日子里。 硬件&#xff1a;OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写&#xff0c;"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...

PL0语法,分析器实现!

简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...

智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制

在数字化浪潮席卷全球的今天&#xff0c;数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具&#xff0c;在大规模数据获取中发挥着关键作用。然而&#xff0c;传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时&#xff0c;常出现数据质…...

华硕a豆14 Air香氛版,美学与科技的馨香融合

在快节奏的现代生活中&#xff0c;我们渴望一个能激发创想、愉悦感官的工作与生活伙伴&#xff0c;它不仅是冰冷的科技工具&#xff0c;更能触动我们内心深处的细腻情感。正是在这样的期许下&#xff0c;华硕a豆14 Air香氛版翩然而至&#xff0c;它以一种前所未有的方式&#x…...

算法岗面试经验分享-大模型篇

文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer &#xff08;1&#xff09;资源 论文&a…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现企业微信功能

1. 开发环境准备 ​​安装DevEco Studio 3.1​​&#xff1a; 从华为开发者官网下载最新版DevEco Studio安装HarmonyOS 5.0 SDK ​​项目配置​​&#xff1a; // module.json5 {"module": {"requestPermissions": [{"name": "ohos.permis…...

【从零开始学习JVM | 第四篇】类加载器和双亲委派机制(高频面试题)

前言&#xff1a; 双亲委派机制对于面试这块来说非常重要&#xff0c;在实际开发中也是经常遇见需要打破双亲委派的需求&#xff0c;今天我们一起来探索一下什么是双亲委派机制&#xff0c;在此之前我们先介绍一下类的加载器。 目录 ​编辑 前言&#xff1a; 类加载器 1. …...

华为OD机试-最短木板长度-二分法(A卷,100分)

此题是一个最大化最小值的典型例题&#xff0c; 因为搜索范围是有界的&#xff0c;上界最大木板长度补充的全部木料长度&#xff0c;下界最小木板长度&#xff1b; 即left0,right10^6; 我们可以设置一个候选值x(mid)&#xff0c;将木板的长度全部都补充到x&#xff0c;如果成功…...