C++ I/O操作---输入输出

本文主要介绍C++ I/O操作中的输入输出流。

目录

1 输入输出

2 输入输出流分类

3 C++中的输入输出流

4 iostream

5 std::ofstream

6 std::fstream

7 std::getline


1 输入输出

        C++的输入输出是数据在不同设备之间的传输,即在硬盘、内存和外设之间的传输。 

        数据如水流一样在各个设备之间传输,因此称为输入输出流。     

        输入操作:指数据传外设(一般是显示器)传入内存,或者从硬盘读取到内存,称为输入流,输入操作就是将外设数据或者硬盘数据转换成输入流,输入流在内存中存储。        

        输出操作:指数据从内存输出到外设(一般是显示器),或者输出保存到文件存储在硬盘中,此时的数据称为输出流,输出流在内存中,将输出流输出到外设或者硬盘的操作叫输出操作。

2 输入输出流分类

        根据I/O操作对象的不同,将I/O操作分为三类:

        (1)标准I/O——以标准输入、输出设备为操作对象

        (2)文件I/O——以磁盘文件为操作对象

        (3)字符串I/O——以内存中指定的空间(通常为字符数组)为操作对象

3 C++中的输入输出流

  1. istream(输入流):用于从文件、字符串或其他数据源读取数据的类。常用的成员函数有>>(插入运算符重载)和read()
  2. ostream(输出流):用于向文件、字符串或其他数据目标写入数据的类。常用的成员函数有<<(插入运算符重载)和write()
  3. ifstream(输入文件流):继承自istream,用于从文件中读取数据的类。常用成员函数有open()close()is_open()等。
  4. ofstream(输出文件流):继承自ostream,用于向文件中写入数据的类。常用成员函数有open()close()is_open()等。
  5. stringstream(字符串流):继承自istreamostream,用于在内存中读写字符串的类。常用成员函数有str()clear()seekg()等。

istream 和 ostream 类都在 头文件中,ifstream和ofstream都在fstream。

4 iostream

iostream是C++标准库中的一个头文件,它包含了用于输入输出操作的类和函数。在C++程序中,我们使用iostream来处理文本、二进制数据以及控制台输入输出。

以下是一些常用的iostream类和函数:

  1. cin:用于从标准输入(通常是键盘)读取数据。
  2. cout:用于向标准输出(通常是屏幕)写入数据。
  3. cerr:用于向标准错误输出(通常是屏幕)写入错误信息。
  4. endl:用于插入换行符并刷新缓冲区。
  5. flush:用于清空输出缓冲区,但不插入换行符。
  6. getline(cin, str):从标准输入读取一行文本并将其存储到字符串变量str中。
  7. getline(cin, str, delimiter):从标准输入读取一行文本,直到遇到指定的分隔符,并将其存储到字符串变量str中。
  8. putchar(ch):将字符ch写入标准输出。
  9. puts(str):将字符串str写入标准输出,并在末尾添加换行符。
  10. scanf:从标准输入读取格式化的数据。
  11. printf:向标准输出写入格式化的数据。

以下是一个简单的示例,演示了如何使用iostream进行输入输出操作:

#include 
#include 

int main() {
    std::string name;
    int age;

    // 从标准输入读取姓名和年龄
    std::cout << "请输入您的姓名:";
    std::cin >> name;
    std::cout << "请输入您的年龄:";
    std::cin >> age;

    // 将姓名和年龄输出到标准输出
    std::cout << "您的名字是:" << name << std::endl;
    std::cout << "您的年龄是:" << age << std::endl;

    return 0;
}

在上述代码中,我们使用了std::cout对象,它是std::ostream的一个实例。通过调用<<运算符,我们将字符串"Hello, World!"写入到屏幕上,并在末尾添加了一个换行符。std::cin是std::istream的一个实例,通过调用运算符>>,将外设输入的字符保存到输入流中,回车表示结束。

除了使用std::cout之外,你还可以使用其他std::ostream对象来将数据写入到文件中。例如,以下代码将字符串写入到名为"output.txt"的文件中:

#include 

int main() {
    std::ofstream outputFile("output.txt");
    if (outputFile.is_open()) {
        outputFile << "This is some text." << std::endl;
        outputFile.close();
    } else {
        std::cerr << "Unable to open file for writing." << std::endl;
    }
    return 0;
}

在上述代码中,我们使用了std::ofstream对象来打开一个文件,并将字符串写入其中。如果文件成功打开,我们使用<<运算符将文本写入文件,并在末尾添加了一个换行符。最后,我们关闭了文件。

总之,std::ostream是一个非常重要的类,它提供了一种灵活的方式来将数据写入到各种输出设备中。通过使用std::ostream对象,你可以方便地实现各种输出操作。

5 std::ofstream

std::ofstream是C++标准库中的一个类,用于创建和写入文件。它属于头文件。使用std::ofstream可以方便地将数据写入到文件中。

以下是一个简单的示例,演示如何使用std::ofstream创建一个文件并写入一些文本:

#include 
#include 

int main() {
    // 创建一个名为"example.txt"的文件
    std::ofstream file("example.txt");

    // 检查文件是否成功打开
    if (!file.is_open()) {
        std::cerr << "无法打开文件" << std::endl;
        return 1;
    }

    // 向文件中写入文本
    file << "这是一个示例文本。" << std::endl;

    // 关闭文件
    file.close();

    std::cout << "文件已成功写入。" << std::endl;

    return 0;
}

在这个示例中,我们首先包含了头文件,然后在main函数中创建了一个std::ofstream对象,并指定了要创建的文件名。接着,我们检查文件是否成功打开,如果成功打开,就向文件中写入一行文本。最后,我们关闭文件并输出一条消息表示文件已成功写入。

6 std::fstream

`std::fstream`是C++标准库中的一个类,用于文件的输入/输出操作。它提供了对文件的基本读写功能,包括打开、关闭、读取和写入等操作。使用`std::fstream`可以方便地处理文本文件和二进制文件。

以下是使用std::fstream进行文件读写操作的示例:

#include 
#include 
#include 

int main() {
    // 打开一个文件用于写入
    std::ofstream outFile("example.txt");
    if (!outFile) {
        std::cerr << "无法打开文件" << std::endl;
        return 1;
    }

    // 写入一些文本到文件中
    outFile << "这是一段示例文本。" << std::endl;
    outFile << "使用std::fstream进行文件操作。" << std::endl;

    // 关闭文件
    outFile.close();

    // 打开一个文件用于读取
    std::ifstream inFile("example.txt");
    if (!inFile) {
        std::cerr << "无法打开文件" << std::endl;
        return 1;
    }

    // 从文件中读取文本并输出到控制台
    std::string line;
    while (std::getline(inFile, line)) {
        std::cout << line << std::endl;
    }

    // 关闭文件
    inFile.close();

    return 0;
}

这个示例中,我们首先使用std::ofstream创建一个名为example.txt的文件,并向其中写入一些文本。然后,我们使用std::ifstream打开同一个文件,并使用std::getline逐行读取文件内容,并将其输出到控制台。最后,我们关闭了两个文件流对象。

7 std::getline

std::getline是C++标准库中的一个函数,用于从输入流中读取一行文本。它的原型如下:

istream& getline(istream& is, string& str, char delim);

参数说明:

  • is:输入流对象,通常为std::cin或文件流对象。
  • str:存储读取到的文本的字符串对象。
  • delim:分隔符字符,默认为换行符('\n')。

返回值:

  • 返回引用到输入流对象的引用。

使用示例:

#include 
#include 

int main() {
    std::string line;
    std::cout << "请输入一行文本:" << std::endl;
    std::getline(std::cin, line);
    std::cout << "你输入的文本是:" << line << std::endl;
    return 0;
}

你可能感兴趣的:(C/C++精进之路,c++,开发语言)