• 【探索C++】输入输出



            在这篇博客中,我们将探讨 C++ 编程语言的基础知识,从 C++ 与 C 的区别开始,到 C++ 的优势命名空间以及输入输出等方面。

    一、C++ 与 C 的区别

            虽然C++是C的超集,但二者之间存在许多关键区别。以下是一些主要的区别:

            1.面向对象:C++支持面向对象编程,这包括类,对象,继承,多态,封装等。而C语言是一个过程式编程语言,不支持这些特性。

    1. // 一个简单的C++类示例
    2. class Rectangle {
    3.     int width, height;  // 私有成员变量
    4.   public:
    5.     void set_values (int,int);  // 成员函数
    6.     int area() {
    7. return width*height;
    8. }  // 成员函数
    9. };

            此外如果你对对向对象的理解还不够深刻或者无法理解他们,可以看看我的这一篇博客:

    【探索C++】用实例教你理解面向对象编程(看不懂打我版)_祐言QAQ的博客-CSDN博客
            2.STL(Standard Template Library)模板库:C++有一个强大的标准模板库,提供了一些预定义的类和方法(函数),如向量,链表,集合,栈,队列,图等。C语言没有这样的库。

            (1)vector:标准模板库(STL)提供的一个动态数组容器。它提供了动态大小的数组,能够在运行时动态地增加或减少元素的数量。末尾增减push_back  ,删除pop_back.

            (2)list:提供的双向链表容器。与vector不同,list以双向链表的形式存储元素,这意味着它可以在任何位置快速插入和删除元素.

            (3)set和multiset都属于标准模板库(STL)提供的关联容器,用于存储一组有序的唯一元素。它们都基于红黑树实现.

            (4)map和multimap是标准模板库(STL)提供的关联容器,用于存储一组键-值对(key-value pairs)。它们的主要区别在于:

            map:map是一种关联容器,其中的每个元素都包含一个键和一个关联的值。键是唯一的,每个键对应一个值,因此不允许重复的键。

            multimap:multimap也是一种关联容器,与map不同的是,它允许多个元素拥有相同的键。换句话说,multimap允许键重复。

            (5)适配器(Adapters:通常指的是容器适配器(Container Adapters),它们是标准模板库(STL)提供的一种包装容器的方式,用于提供不同的接口和功能。常见的容器适配器包括stack、queue和priority_queue。

            3.异常处理:C++通过try、catch和throw关键字支持异常处理。而C语言没有内置的异常处理支持。

    二、C++ 的优势

            C++是一种多范式编程语言,它具有诸多优势,包括:

            1.性能:C++的运行速度非常快,这使得它在需要大量计算的领域,如游戏编程,很受欢迎。

            2.面向对象:C++的面向对象特性使得代码更加模块化,更容易维护和复用。

            3.丰富的库支持:C++有大量的库和工具,可以处理各种任务,从图形用户界面到3D图形,从数据库操作到网络编程。

            4.强类型检查:C++ 在类型检查方面更加严格,可以减少很多常见的错误。

    三、流

            在C++中,是一个抽象概念,用于处理输入/输出操作。想象一下现在有一条河流,而cin、cout等像是河边垂钓者,数据就像是鱼,等待着这些垂钓者也就是流将其钓起。

    常见的流有:

            cin(用于从标准输入读取数据);

            cout(用于向标准输出写入数据);

            cerr(用于输出错误消息); 

            clog(用于记录程序的一般信息)等。

    1. #include <iostream>
    2. using namespace std;
    3. int main() {
    4. int myNumber;
    5. // 使用 << 操作符将信息输出到cout流
    6. cout << "Please enter a number: ";
    7. // 使用 >> 操作符从cin流读取输入
    8. cin >> myNumber;
    9. cout << "Your number is: " << myNumber << endl;
    10. return 0;
    11. }

    四、命名空间

           命名空间是 C++ 中用于避免命名冲突的机制。通过将一组相关的变量、函数、类等放在命名空间中,可以有效组织代码。

    1. #include <iostream>
    2. using namespace std; // 使用std命名空间
    3. int main() {
    4. cout << "Hello, World!"; // 实际上是std::cout
    5. return 0;
    6. }

            如果你不想使用 using namespace std;你也可以直接使用 std:: 前缀来访问std命名空间中的元素:

    1. #include
    2. int main() {
    3. std::cout << "Hello, World!";
    4. return 0;
    5. }

            当然你也可以自己写一个属于自己的命名空间,下面就举一个简单的例子,写一个自定义命名空间teacher,存放一个名字“小明”,然后打印出小明。

    1. #include <iostream>
    2. using namespace std;
    3. namespace teacher {
    4. // 在命名空间里定义字符数组并初始化
    5. char name[20] = "xiaoming";
    6. // 命名空间内部可以定义任何内容
    7. }
    8. int main() {
    9. // 因为 name 是定义在 teacher 命名空间里,所以要么先声明使用 teacher 命名空间,要么在 name 前面加上 teacher::
    10. cout << teacher::name << endl;
    11. return 0;
    12. }
    1. 命名空间的别名:可以使用 namespace 的别名来简化命名空间的名称。例如:

      namespace tc = teacher;
      
    2. 命名空间的嵌套:可以在一个命名空间中嵌套另一个命名空间。例如:

      1. namespace OuterNamespace {
      2. namespace InnerNamespace {
      3. // 内部命名空间中的代码
      4. int innerFunction(int y) {
      5. return y + 10;
      6. }
      7. }
      8. }

      要访问内部命名空间中的成员,可以使用 :: 操作符。

    五、C++的输入与输出

            C++ 中的输入输出通过流来实现,可以使用 控制符“<<将数据输出到流中,使用控制符 >>” 从流中读取数据,这个<<看起来很像C中的移位操作符:左移,那么为什么在C++中就成了输出控制符了呢,实际上这就是C++的一个特点:重载,这里简单提一句,后续还会专门讲。

            下面我们举几个例子来简单理解一下C++中的输入和输出用法

    1. 打印你的年龄

    1. #include <iostream>
    2. using namespace std;
    3. int main() {
    4. int age;
    5. cout << "Enter your age: ";
    6. cin >> age;
    7. cout << "You are " << age << " years old." << endl;
    8. return 0;
    9. }

      2. 输出你的名字(中间保留空格)

          

    1. #include <iostream>
    2. #include <string>
    3. using namespace std;
    4. int main() {
    5. string s1;
    6. // 使用getline函数来读取整行输入,直到按下回车键
    7. getline(cin, s1);
    8. cout << s1 << endl;
    9. return 0;
    10. }

            这里我们用到了getline()函数,它的功能就是获取整行输入,如果我们使用cin,空格就会被吃掉,从而只显示Zhang 或者Li 而不是全名。

            getline还有两种写法,这是在使用char类型字符串时可以使用的,而不是我们写的string类,关于string类我们在上一篇博客中有详细讲到,链接:【探索C++】string类:更强大的字符串处理_祐言QAQ的博客-CSDN博客

    char name[20];
            cin.getline(name,20);        
            cin.get(name,20);

            这些是 C++ 中基础的输入输出操作,当然还有更多高级用法可以进一步探索。

            更多C/C++语言Linux系统数据结构ARM板实战相关文章,关注专栏:

       手撕C语言

                玩转linux

                        脚踢数据结构

                                系统、网络编程

                                         探索C++

                                                 6818(ARM)开发板实战

    📢写在最后

    • 今天的分享就到这啦~
    • 觉得博主写的还不错的烦劳 一键三连喔~
    • 🎉🎉🎉感谢关注🎉🎉🎉
  • 相关阅读:
    Spring中如何获取JavaBean呢?
    windwos安装vcpkg(包含grpc)
    代码随想录笔记--贪心算法篇
    黑马点评第二个模块---商户查询缓存
    Java | Leetcode Java题解之第160题相交链表
    SpringBoot + Docker 实现一次构建到处运行
    华为与开放原子开源基金会携四大开源产品亮相1024程序员节
    doc与docx文档转html,格式样式不变(包含图片转换)
    数据结构与算法训练:第十五弹
    原创->CommonsCollections1-DefaultMap链
  • 原文地址:https://blog.csdn.net/qq_64928278/article/details/132588534