标准输入输出流,格式化输入输出方法、插入提取重载、文件流的打开关闭读写的相关知识
时间: 2023-08-22 11:08:29 浏览: 109
1. 标准输入输出流
标准输入输出流是C++中常用的输入输出流,包括`cin`和`cout`。`cin`用于从标准输入设备(通常是键盘)读取数据,`cout`用于向标准输出设备(通常是屏幕)输出数据。使用标准输入输出流时,可以使用流提取运算符`>>`和插入运算符`<<`。
例如,从标准输入设备读取一个整数并输出它的两倍:
```c++
int num;
cin >> num;
cout << "两倍为:" << num * 2 << endl;
```
2. 格式化输入输出方法
格式化输入输出方法是指使用格式化的字符串来进行输入输出。格式化字符串由普通字符和格式控制符组成,格式控制符指定了输出的格式,例如输出的宽度、精度、填充字符等。
例如,使用格式化输出方法输出一个浮点数,并设置宽度为10,小数点后保留2位:
```c++
double num = 3.14159;
cout << setw(10) << setprecision(2) << num << endl;
```
上述代码中,`setw(10)`指定了输出的宽度为10,`setprecision(2)`指定了小数点后保留2位。
3. 插入提取重载
插入提取重载是C++中重载运算符的一种常见用法,它可以让我们自定义类型支持输入输出流的操作。插入运算符`<<`用于将自定义类型插入输出流中,提取运算符`>>`用于从输入流中提取自定义类型。插入提取重载的函数原型如下:
```c++
ostream& operator<<(ostream& os, const MyType& obj);
istream& operator>>(istream& is, MyType& obj);
```
其中,`os`和`is`分别是输出流和输入流对象,`obj`是自定义类型的对象。插入运算符的返回值为输出流对象的引用,提取运算符的返回值为输入流对象的引用。
例如,定义一个名为`Person`的结构体,并为其重载插入提取运算符,使其支持输入输出流的操作:
```c++
#include <iostream>
#include <string>
using namespace std;
struct Person {
string name;
int age;
};
ostream& operator<<(ostream& os, const Person& p) {
os << "姓名:" << p.name << ",年龄:" << p.age;
return os;
}
istream& operator>>(istream& is, Person& p) {
cout << "请输入姓名和年龄:";
is >> p.name >> p.age;
return is;
}
int main() {
Person p;
cin >> p;
cout << p << endl;
return 0;
}
```
在以上代码中,我们定义了一个名为`Person`的结构体,其中包含姓名和年龄两个成员。然后,我们分别为其重载了插入提取运算符,并在`main`函数中使用它们进行输入输出流的操作。
4. 文件流的打开关闭读写的相关知识
文件流是C++中常用的输入输出流,它们用于读写文件。文件流包括`ifstream`和`ofstream`,分别用于读取和写入文件。使用文件流时,需要使用`open`函数打开文件,并在使用完之后使用`close`函数关闭文件。
例如,使用文件流读取一个文件中的数据:
```c++
#include <iostream>
#include <fstream>
using namespace std;
int main() {
ifstream fin("data.txt");
if (!fin.is_open()) {
cout << "打开文件失败!" << endl;
return 0;
}
int num;
while (fin >> num) {
cout << num << " ";
}
cout << endl;
fin.close();
return 0;
}
```
在以上代码中,我们使用`ifstream`打开了一个名为`data.txt`的文件,并在判断文件是否打开成功后,使用循环读取文件中的整数并输出。最后,我们使用`close`函数关闭文件。
写入文件的方式与读取文件类似,只需使用`ofstream`代替`ifstream`即可。
阅读全文