编写你的第一个 C++ 程序

C++Beginner
立即练习

简介

在本实验中,你将学习如何编写第一个 C++ 程序。首先,你将在 Ubuntu 22.04 上安装 GCC (GNU Compiler Collection) 编译器并配置必要的环境变量。接着,你将创建一个新的 C++ 源代码文件,编写程序的基本结构,并使用 cout 语句打印「Hello World」消息。此外,你还将学习如何编译和执行程序,以及如何添加单行和多行注释、使用 endl\n 进行换行,并修复诸如缺少分号之类的常见语法错误。

在 Ubuntu 22.04 上安装 GCC 编译器并配置环境变量

在这一步中,你将学习如何在 Ubuntu 22.04 上安装用于 C++ 的 GCC (GNU Compiler Collection) 编译器并配置必要的环境变量。GCC 对于编译和运行 C++ 程序至关重要。

首先,让我们在 WebIDE 中打开终端。你可以通过点击屏幕底部的终端图标或使用键盘快捷键(通常是 Ctrl+`)来完成。

我们先更新软件包列表,以确保获取到有关可用软件包的最新信息:

sudo apt update

输出示例:

Hit:1 http://mirrors.cloud.aliyuncs.com/ubuntu jammy InRelease
Hit:2 http://mirrors.cloud.aliyuncs.com/ubuntu jammy-updates InRelease
Hit:3 http://mirrors.cloud.aliyuncs.com/ubuntu jammy-backports InRelease
Hit:4 http://mirrors.cloud.aliyuncs.com/ubuntu jammy-security InRelease
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
157 packages can be upgraded. Run 'apt list --upgradable' to see them.

终端更新命令输出

接下来,我们将安装 GCC 编译器及相关的开发工具:

sudo apt install -y build-essential

输出示例:

Reading package lists...
Building dependency tree...
Reading state information...
build-essential is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 22 not upgraded.

要验证安装并检查 GCC 版本,请运行:

g++ --version

输出示例:

g++ (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0
Copyright (C) 2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

GCC 编译器通常已经包含在系统 PATH 中,因此无需进行额外配置。

创建带有 .cpp 扩展名的新 C++ 源代码文件

在这一步中,你将学习如何创建一个带有 .cpp 扩展名的新 C++ 源代码文件。在 C++ 中,源代码文件使用 .cpp 扩展名,以表明它们包含 C++ 代码。我们将使用 WebIDE 的文件资源管理器和文本编辑器来创建我们的第一个 C++ 源代码文件。

首先,在终端中导航到 ~/project 目录:

cd ~/project

现在,打开 WebIDE 的文件资源管理器。你会看到一个包含文件和文件夹列表的侧边栏。找到允许创建新文件的图标——它可能看起来像一个「+」号或「New File」选项。

在文件资源管理器中右键点击并选择「New File」。当提示输入名称时,将其命名为 hello.cpp.cpp 扩展名至关重要,因为它告诉编译器和开发工具这是一个 C++ 源代码文件。

终端中的文件创建示例(供参考):

touch hello.cpp

点击新创建的 hello.cpp 文件,在 WebIDE 的文本编辑器中打开它。你将看到一个空白文件,准备好编写你的第一个 C++ 代码。

使用 .cpp 扩展名很重要,原因如下:

  • 它将文件标识为 C++ 源代码文件
  • 帮助开发工具和编译器识别文件类型
  • 将 C++ 文件与其他编程语言文件(如 .c (C)、.java (Java) 或 .py (Python))区分开来

此时,你的 hello.cpp 文件已准备就绪,可以开始编写 C++ 代码了。在接下来的步骤中,你将学习如何在此文件中编写一个基本的 C++ 程序。

使用 int main() 函数编写程序基本结构

在这一步中,你将了解 C++ 程序的基本结构,重点是 main() 函数。每个 C++ 程序都必须有一个 main() 函数,它是程序开始执行的入口点。

在 WebIDE 中打开你在上一步创建的 hello.cpp 文件。现在我们将添加程序的基本结构:

#include <iostream>

int main() {
    // Your code will go here
    return 0;
}

注意: 建议手动输入代码以获得更好的学习效果。请注意花括号 { } 和分号 ;,因为它们在 C++ 语法中至关重要。不要忘记空格和缩进,否则步骤验证可能会失败。

让我们剖析一下这个基本结构:

  1. #include <iostream>:这是一个预处理指令,用于包含输入/输出流库。它允许我们使用输入和输出操作,例如打印到屏幕。
  2. int main():这是主函数声明
    • int 指定函数将返回一个整数值
    • main() 是 C++ 程序的标准入口点
    • 空括号 () 表示该函数不接受任何参数
  3. 花括号 { }:定义函数体,你的代码将写在这里
  4. return 0;:表示程序成功完成
    • 返回 0 告诉操作系统程序运行没有错误
    • 这是 C++ 程序中的标准做法

WebIDE 会在你输入时自动保存更改。或者,你可以使用编辑器的保存选项手动保存文件。

如果你想了解更多关于 WebIDE 的信息,请查看 WebIDE 指南

需要记住的一些要点:

  • 每个 C++ 程序都必须有一个 main() 函数
  • main() 函数是程序执行开始的地方
  • return 0; 语句通常用于指示程序执行成功

你可以将 main() 函数想象成旅程的起点。就像公路旅行从特定地点开始一样,C++ 程序从 main() 函数开始执行。

使用 cout 打印 Hello World 消息

在这一步中,你将学习如何使用 cout 在屏幕上打印「Hello, World!」消息。cout 是 C++ 标准输入/输出库的一部分,用于显示输出。

在 WebIDE 中打开 hello.cpp 文件,并修改 main() 函数以包含以下代码:

#include <iostream>

int main() {
    std::cout << "Hello, World!" << std::endl;
    return 0;
}

让我们剖析一下这行新代码:

  • std::cout:这是标准输出流对象
    • std:: 表示我们正在使用标准命名空间
    • cout 代表「console output」(控制台输出)
  • <<:流插入运算符,用于将数据发送到输出流
  • "Hello, World!":我们想要打印的文本消息
  • std::endl:添加一个新行并刷新输出缓冲区
    • 确保消息立即显示
    • 将光标移动到下一行

保存文件时,请确保包含上述显示的完整结构。

关于 cout 的一些关键点:

  • 它用于将文本、数字和其他数据类型打印到屏幕上
  • << 运算符可以链式使用以打印多个项目
  • std::endl 用于在打印后创建新行

你可以将 cout 想象成一个向世界宣布你消息的扩音器。<< 运算符帮助你加载消息,而 std::endl 确保每个人都能清晰地听到它。

使用 g++ hello.cpp -o hello 命令编译程序

在这一步中,你将学习如何使用 g++ 编译器编译你的 C++ 程序。编译是将人类可读的 C++ 源代码转换为计算机可以运行的可执行程序的过程。

在 WebIDE 中打开终端。确保你位于 ~/project 目录中:

cd ~/project

现在,让我们使用 g++ 命令编译你之前创建的 hello.cpp 文件:

g++ hello.cpp -o hello

让我们剖析一下这个命令:

  • g++:GNU C++ 编译器
  • hello.cpp:你想要编译的源代码文件
  • -o hello:指定输出的可执行文件名
    • -o 是一个让你命名输出文件的选项
    • hello 是你将创建的可执行文件的名称

输出示例:

## No output means successful compilation

如果编译成功,将不会显示任何错误消息。编译器会在同一目录下创建一个名为 hello 的可执行文件。

终端编译 C++ 代码

要验证编译,你可以检查目录中的文件:

ls

输出示例:

hello  hello.cpp

现在你应该看到两个文件:

  • hello.cpp:你的源代码文件
  • hello:编译后的可执行程序

一些重要的编译说明:

  • 如果你的代码中有任何错误,g++ 将显示错误消息
  • 在尝试运行程序之前,请务必检查并修复任何编译错误
  • -o 选项是可选的,但为你的可执行文件起一个有意义的名字是一个好习惯

你可以将编译想象成将一本书从一种语言翻译成另一种语言。g++ 编译器将你人类可读的 C++ 代码翻译成计算机可以理解和执行的语言。

使用 ./hello 命令执行程序

在这一步中,你将学习如何运行刚刚编译的可执行程序。编译 C++ 程序后,你可以使用 ./ 命令后跟可执行文件名来执行它。

确保你位于 ~/project 目录中:

cd ~/project

要运行你在上一步中编译的程序,请使用以下命令:

./hello

./ 告诉系统在当前目录中查找可执行文件,而 hello 是你创建的可执行文件的名称。

输出示例:

Hello, World!

让我们剖析一下发生了什么:

  • ./ 的意思是「在当前目录中」
  • 程序读取你编译后的可执行文件中的指令
  • 它打印你在 C++ 源代码中定义的消息
  • 打印后,程序退出

一些重要的执行说明:

  • 在当前目录中运行程序时,请务必在可执行文件名之前使用 ./
  • 程序必须具有执行权限(g++ 会自动提供)
  • 如果你没有看到输出,请仔细检查你是否正确编译了程序

你可以将执行程序想象成启动汽车。编译是准备汽车,而运行程序则是转动钥匙并驾驶。

如果你想多次运行该程序,只需重复 ./hello 命令即可。

添加单行和多行注释

在这一步中,你将学习如何向 C++ 代码添加注释。注释是你代码中的说明,解释了代码的功能。它们会被编译器忽略,并有助于提高代码的可读性。

在 WebIDE 中打开 hello.cpp 文件,并修改它以包含不同类型的注释:

#include <iostream>

// This is a single-line comment
// It explains what the program does

/*
This is a multi-line comment
You can write multiple lines of explanation
Without worrying about adding // to each line
*/
int main() {
    // Print a greeting message
    std::cout << "Hello, World!" << std::endl;  // Inline comment explaining the output

    /*
    You can also use multi-line comments
    in the middle of your code if needed
    */
    return 0;  // Return success status to the operating system
}

让我们剖析一下注释的类型:

  1. 单行注释:

    • // 开头
    • 延伸到行尾
    • 非常适合简短的解释
  2. 多行注释:

    • /* 开头
    • */ 结尾
    • 可以跨越多行
    • 对于较长的解释很有用
  3. 行内注释:

    • 添加在代码行的末尾
    • 解释特定的代码行

编译并运行程序以验证它仍然有效:

g++ hello.cpp -o hello
./hello

输出示例:

Hello, World!

关于注释的一些关键点:

  • 注释使你的代码更易于理解
  • 它们帮助其他程序员(以及你自己)理解代码的目的
  • 编译器完全忽略注释
  • 使用注释来解释「为什么」这样做,而不是「做了什么」

你可以将注释想象成书中的便利贴。它们提供了额外的上下文和解释,而不会改变实际的文本。

使用 endl 和 \n 进行换行

在这一步中,你将学习在 C++ 输出中创建换行的两种方法:std::endl 和换行符 \n。这两种方法都可以帮助你格式化跨多行的输出。

在 WebIDE 中打开 hello.cpp 文件,并修改它以演示换行:

#include <iostream>

int main() {
    // Using std::endl for line breaks
    std::cout << "Hello, World!" << std::endl;
    std::cout << "Welcome to C++ Programming!" << std::endl;

    // Using \n for line breaks
    std::cout << "Using newline character:\n";
    std::cout << "Line 1\n";
    std::cout << "Line 2\n";

    // Mixing both methods
    std::cout << "Mixing methods: " << std::endl;
    std::cout << "Line with endl\n";
    std::cout << "Line with newline character" << std::endl;

    return 0;
}

👆 LabEx 提示: 点击代码块右下角的「Explain Code」(解释代码)与 Labby AI 聊天,获取代码说明。

让我们剖析一下换行方法:

  1. std::endl

    • 添加一个新行
    • 刷新输出缓冲区(确保立即打印)
    • <iostream> 库的一部分
    • std::cout 一起使用
  2. \n(换行符):

    • 创建新行的简单方法
    • std::endl 更轻量
    • 在许多编程环境中都有效
    • 不会刷新输出缓冲区

编译并运行程序:

g++ hello.cpp -o hello
./hello

输出示例:

Hello, World!
Welcome to C++ Programming!
Using newline character:
Line 1
Line 2
Mixing methods:
Line with endl
Line with newline character

关键点:

  • std::endl\n 都可以创建新行
  • std::endl 更全面但稍慢
  • \n 更快且更轻量
  • 你可以混合使用这些方法

你可以将换行符想象成书中的段落分隔符。它们有助于组织和结构化你的输出。

修复诸如缺少分号之类的常见语法错误

在这一步中,你将了解 C++ 中的常见语法错误,重点是缺少分号。分号在 C++ 中至关重要,因为它们标记了语句的结束。

在 WebIDE 中创建一个名为 syntax_errors.cpp 的新文件:

cd ~/project
touch syntax_errors.cpp
#include <iostream>

int main() {
    // Common syntax error: Missing semicolon
    std::cout << "This line has an error"  // Missing semicolon here!
    std::cout << "This line will not compile" << std::endl;

    // Correct version with semicolons
    std::cout << "This line is correct" << std::endl;
    std::cout << "All statements end with a semicolon" << std::endl;

    return 0;  // Don't forget the semicolon here too!
}

尝试编译程序:

g++ syntax_errors.cpp -o syntax_errors

编译错误示例:

syntax_errors.cpp: In function ‘int main’:
syntax_errors.cpp:5:42: error: expected ‘;’ before ‘std’
    5 |     std::cout << "This line has an error"  // Missing semicolon here!
      |                                          ^
      |                                          ;
    6 |     std::cout << "This line will not compile" << std::endl;
      |     ~~~

关于分号的关键点:

  • C++ 中的每个语句都必须以分号 ; 结尾
  • 分号告诉编译器一条指令在哪里结束,另一条在哪里开始
  • 缺少分号会导致编译错误
  • 容易忘记分号的常见地方:
    • cout 语句之后
    • return 语句之后
    • 变量声明的末尾

让我们修复错误:

  1. 添加缺失的分号
  2. 确保每个语句都以 ; 结尾

编译更正后的版本:

g++ syntax_errors.cpp -o syntax_errors
./syntax_errors

如果成功,将不会出现错误消息。

你可以将分号想象成句子中的句号。它们标记了你代码中完整思想的结束。

总结

在本实验中,你学习了如何在 Ubuntu 22.04 上安装用于 C++ 的 GCC (GNU Compiler Collection) 编译器并配置必要的环境变量。你创建了一个新的 C++ 源代码文件,编写了带有 int main() 函数的程序基本结构,并使用 cout 打印了「Hello World」消息。随后,你使用 g++ 命令编译了程序并执行了它。此外,你还学习了如何添加单行和多行注释、使用 endl\n 进行换行,并修复了诸如缺少分号之类的常见语法错误。

完成这些步骤后,你将为编写和运行第一个 C++ 程序打下坚实的基础,并理解在 Ubuntu 22.04 上进行 C++ 开发所需的基本工具和概念。