不管使用哪种操作系统,文件都是程序员、计算机用户和学生日常生活中非常重要的一部分。这些文件帮助我们以不同的格式保存数据,具有安全性和冗余性。因此,在今天这个简单的教程中,我们将讨论在Ubuntu 20.04系统中逐行读取文件数据的 C++ 示例。
让我们先从 Ubuntu 20.04 系统中安装名为“g++”的 C++编译器开始,因为我们正在用 C++ 语言编写代码。为此,我们按Ctrl+alt+T调出终端。
安装g++,输入如下命令
- linuxmi@linuxmi:~/www.linuxmi.com$ sudo apt-get install g++
用g++ --version查看g++版本。
- linuxmi@linuxmi:~/www.linuxmi.com$ g++ --version
OK,安装了g++编译器后,我们现在就可以实现以下示例了。
在我们的 Ubuntu 20.04 系统中创建了一个新的 c++ 文件。文件名为“linuxmi.com.cpp”。该文件可以在任何编辑器中打开以添加 c++ 代码。这些编辑器包括文本、vim 和 nano 编辑器。我们现在使用“vim”打开文件“linuxmi.com.cpp”。
示例一
空白文件将在 vim 编辑器中展开。我们已经通过包含一些重要且必要的头文件来开始我们的代码。头文件包括输入输出流、字符串和文件流头文件。代码将在没有命名空间的情况下启动。所以,我们首先启动了main()方法。在我们的第一个示例中,我们使用已经创建的文件逐行读取文本。“std”关键字将用于在代码中使用标准输入和输出。
因此,输入文件流用于使用文件对象,即ReadF 从主目录中读取文件“www.linuxmi.com.txt”。字符串类型变量被声明为“data”,以便在读取后将文件的文本简单地保存到其中。现在,这里使用 while 循环来使用 C++ 的 getline() 函数。该函数有两个参数,即“ReadF”对象和字符串变量“data”。getline() 函数将从 www.linuxmi.com.txt 文件中读取文本并将其保存到变量“data”中,直到文件不为空。当这个条件成立时,我们使用“cout”语句在shell中显示文件数据。
让我们使用“g++”编译器在终端中编译新实现的代码。之后,使用“./linuxmi.com.out”指令执行文件。输出在终端上逐行显示文件数据。
示例二
我们的第一个示例是关于逐行读取文件中的数据并显示在 shell 上。在这个例子中,我们将数据写入文件,然后逐行读取。因此,我们通过打开“linuxmi.com.cpp”文件更新了代码。添加了标题和命名空间。在main() 方法中,我们使用了输出文件流对象,即“WriteF”将数据写入www.linuxmi.com.txt 文件。用户已使用 WriteF 对象将数据添加到文件中。WriteF 对象在此处从用户那里获取单行输入。WriteF 对象将被关闭,并声明“data”。输入文件流对象,即ReadF,用于逐行读取www.linuxmi.com.txt文件中的文本。当文件不为空时,它将继续使用 getline 方法将文件对象 ReadF 中的数据保存在变量“data”中。cout 语句在 shell 上逐行显示数据。
最后,ReadF输入文件流对象被关闭。程序到此结束。现在让我们执行它。
首先,用g++编译器编译更新后的代码,然后执行。执行后,当用户在 www.linuxmi.com.txt 文件中写入一行代码时,我们还得到了一行输出。如下:
示例三
因此,这是我们最后一个但同样重要的示例,逐行从文件中读取数据。现在,我们打开了相同的 linuxmi.com.cpp 文件并更新了它的代码,如下所示。因此,我们开始包含必要的头文件,即 iostream、string 和 fstream,用于文件处理。然后在 main 函数开始之前使用了一个命名空间。该脚本与上述两个示例代码略有不同。我们在 main() 函数的开头声明了头文件“fstream”的对象“File”。该对象将用于打开、写入、读取和关闭文件。首先,我们使用对象文件打开“www.linuxmi.com.txt”文件。标准“ios”包标识流类型,即输入或输出。
您可以看到,我们已将其指定为输出流。“out”关键字将用于在打开文件后写入文件,而“in”关键字将用于从文件中读取。因此,我们利用“if”语句来检查“File”对象是否打开了特定文件的条件。为此,使用了“is_open”函数。如果文件为空,文件流对象将在文件中输入 6 行,如下图所示。之后,File 对象将关闭输出流。现在,我们通过“ios::in”声明打开了带有流对象“File”的同一个文件www.linuxmi.com.txt。此处使用“if”语句来交叉文件是否为空。如果是这样,则声明字符串类型变量“data”。while 循环中的 getline() 函数将逐行从 File 对象中获取数据并将其保存到变量“data”中。这个变量“数据”将用于在shell上显示行。最后,文件对象被关闭。
编译并运行此文件后,将在www.linuxmi.com.txt 文件中写入一行代码时,我们还得到了 6 行输出。如下:
结论
现在我们已经完成了一项非常出色的工作,涵盖了主题C++:在Ubuntu 20.04系统中逐行读取文件。我们从这个从已经创建的文本文件读取数据的简单示例开始。之后,我们还了解了如何使用文件处理将数据写入文件,从文件中读取数据,并在shell上显示数据。