C++输出流,输入输出是数据的传递过程,数据如流水一般从一处流向另一处,C++形象的将此过程称为流。
输入操作:是控制序列中的字节内容从一个设备流入内存
输出操作:是控制序列中的字节内容从内存流向某个设备
目录
1 C++输入输出流
2 std::ostream
3 std::ofstream
4 std::fstream
1 C++输入输出流
C++中的输入输出流主要涉及到以下几个类:
- istream(输入流):用于从文件、字符串或其他数据源读取数据的类。常用的成员函数有- >>(插入运算符重载)和- read()。
- ostream(输出流):用于向文件、字符串或其他数据目标写入数据的类。常用的成员函数有- <<(插入运算符重载)和- write()。
- ifstream(输入文件流):继承自- istream,用于从文件中读取数据的类。常用成员函数有- open()、- close()、- is_open()等。
- ofstream(输出文件流):继承自- ostream,用于向文件中写入数据的类。常用成员函数有- open()、- close()、- is_open()等。
- stringstream(字符串流):继承自- istream和- ostream,用于在内存中读写字符串的类。常用成员函数有- str()、- clear()、- seekg()等。
2 std::ostream
 
std::ostream是C++标准库中的一个类,用于表示输出流。它提供了一种将数据写入到各种输出设备(如屏幕、文件等)的方法。通过使用std::ostream对象,你可以方便地将数据格式化并输出到不同的目标。
以下是一个简单的示例,演示如何使用std::ostream将数据写入到屏幕上:
#include <iostream>int main() {std::cout << "Hello, World!" << std::endl;return 0;
}
在上述代码中,我们使用了std::cout对象,它是std::ostream的一个实例。通过调用<<运算符,我们将字符串"Hello, World!"写入到屏幕上,并在末尾添加了一个换行符。
除了使用std::cout之外,你还可以使用其他std::ostream对象来将数据写入到文件中。例如,以下代码将字符串写入到名为"output.txt"的文件中:
#include <fstream>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对象,你可以方便地实现各种输出操作。
3 std::ofstream
std::ofstream是C++标准库中的一个类,用于创建和写入文件。它属于<fstream>头文件。使用std::ofstream可以方便地将数据写入到文件中。
以下是一个简单的示例,演示如何使用std::ofstream创建一个文件并写入一些文本:
#include <iostream>
#include <fstream>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;
}
在这个示例中,我们首先包含了<fstream>头文件,然后在main函数中创建了一个std::ofstream对象,并指定了要创建的文件名。接着,我们检查文件是否成功打开,如果成功打开,就向文件中写入一行文本。最后,我们关闭文件并输出一条消息表示文件已成功写入。
4 std::fstream
`std::fstream`是C++标准库中的一个类,用于文件的输入/输出操作。它提供了对文件的基本读写功能,包括打开、关闭、读取和写入等操作。使用`std::fstream`可以方便地处理文本文件和二进制文件。
以下是使用std::fstream进行文件读写操作的示例:
#include <iostream>
#include <fstream>
#include <string>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逐行读取文件内容,并将其输出到控制台。最后,我们关闭了两个文件流对象。
5 std::getline
std::getline是C++标准库中的一个函数,用于从输入流中读取一行文本。它的原型如下:
istream& getline(istream& is, string& str, char delim);
参数说明:
- is:输入流对象,通常为- std::cin或文件流对象。
- str:存储读取到的文本的字符串对象。
- delim:分隔符字符,默认为换行符('\n')。
返回值:
- 返回引用到输入流对象的引用。
使用示例:
#include <iostream>
#include <string>int main() {std::string line;std::cout << "请输入一行文本:" << std::endl;std::getline(std::cin, line);std::cout << "你输入的文本是:" << line << std::endl;return 0;
}