C/C++中I/O进阶详解及其作用介绍
什么是C/C++中的I/O
I/O即输入和输出,是计算机程序的必要组成部分。C/C++中的I/O类包含了对文件、网络、控制台等资源的读写操作。
I/O的作用
I/O操作主要用于以下几个方面:
- 文件读写:从文件中读取数据或将数据写入文件,常用于数据持久化;
- 网络通信:通过网络收发数据;
- 用户输入输出:从控制台等标准输入输出设备中读取数据或将数据输出显示,常用于人机交互;
- 报告错误:将程序运行过程中的错误信息输出到日志文件中。
C/C++中的I/O类
C/C++提供了一组I/O类,包含在头文件<iostream>
和<fstream>
中。
iostream类
iostream类提供了从标准输入和标准输出设备(通常是键盘和屏幕)中读写字符流的方法。它定义了两个基本的流对象:
cin
: 用于从标准输入设备读取输入数据的输入流对象;cout
: 用于向标准输出设备写入输出数据的输出流对象。
示例代码:
#include <iostream>
using namespace std;
int main() {
int x;
cout << "请输入一个整数:";
cin >> x;
cout << "该整数为:" << x << endl;
return 0;
}
运行该程序,将会输出“请输入一个整数:”提示,后续输入一个整数,程序将输出该整数。cin和cout的细节我们将在下面详细讲解。
fstream类
fstream类提供了从文件中读写字符流的方法。它定义了三个基本的流对象:
ifstream
: 用于读取输入文件的输入流对象;ofstream
: 用于向输出文件写入输出数据的输出流对象;fstream
: 既可以用于读取输入文件,也可以用于向输出文件写入输出数据的输入输出流对象。
示例代码:
#include <iostream>
#include <fstream>
using namespace std;
int main() {
int x;
ofstream file("test.txt");
if (file.is_open()) {
cout << "请输入一个整数:";
cin >> x;
file << "你输入的整数为:" << x << endl;
file.close();
} else {
cout << "打开文件失败!" << endl;
}
return 0;
}
运行该程序,将会提示输入一个整数,输入后程序将向文件“test.txt”中写入该整数,并输出“你输入的整数为:xxx”。其中,ofstream用于向文件中写入信息,file.is_open()方法用于判断文件是否打开成功,file.close()方法用于关闭文件。
标准输入输出流详解
从标准输入设备读取输入数据
从标准输入设备读取输入数据常用的方法是使用cin
流对象,它提供了多种读取输入数据的方法。cin对象默认以空格、制表符、换行符作为数据的分隔符,对于整数或浮点数,cin遇到这些字符时会自动停止读取。
读取特定类型数据
下面是读取特定数据类型的示例代码:
#include <iostream>
using namespace std;
int main() {
int a, b, c;
cout << "请输入三个整数(用空格隔开):";
cin >> a >> b >> c;
cout << "你输入的三个整数为:" << a << " " << b << " " << c << endl;
return 0;
}
输出结果示例:
请输入三个整数(用空格隔开):1 2 3
你输入的三个整数为:1 2 3
读取一行字符串
下面是读取一行字符串的示例代码:
#include <iostream>
#include <string>
using namespace std;
int main() {
string str;
cout << "请输入一行字符串:";
getline(cin, str);
cout << "你输入的字符串为:" << str << endl;
return 0;
}
注意,这里使用了std::getline()
函数,该函数可以从std::cin
流对象中读取一行字符串,以换行符为结束标志,将整行输入存储到string对象中。
读取一定数量的字符
有时候我们需要读取一定数量的字符,并且不想用空格、制表符、换行符来分隔字符。下面是读取一定数量的字符的示例代码:
#include <iostream>
using namespace std;
int main() {
char str[300];
cout << "请输入10个字符:";
cin.read(str, 10);
cout << "你输入的字符为:";
for (int i = 0; i < 10; i++) {
cout << str[i];
}
cout << endl;
return 0;
}
该程序中使用了cin.read()
函数,该函数可以读取指定数量的字符并存储到指定的数组中,而不是默认以空格、制表符、换行符作为结束标志。
向标准输出设备写入输出数据
向标准输出设备写入输出数据常用的方法是使用cout
流对象,它提供了多种将输出数据写入输出流对象的方法。
输出特定类型数据
下面是输出特定类型数据的示例代码:
#include <iostream>
using namespace std;
int main() {
int x = 123;
cout << "输出整数:";
cout << x << endl;
double y = 123.456;
cout << "输出小数:";
cout << y << endl;
char ch = 'A';
cout << "输出字符:";
cout << ch << endl;
char str[] = "Hello, World!";
cout << "输出字符串:";
cout << str << endl;
return 0;
}
输出结果示例:
输出整数:123
输出小数:123.456
输出字符:A
输出字符串:Hello, World!
对输出进行格式化
下面是对输出进行格式化的示例代码:
#include <iostream>
using namespace std;
int main() {
int a = 125;
cout << "使用十六进制输出整数:";
cout << hex << a << endl; // 输出125的十六进制表示
cout << "使用科学计数法输出小数:";
cout << scientific << 123.456789 << endl; // 输出123.456789的科学计数法表示
cout << "输出实数,保留2位小数:";
cout.precision(2);
cout << fixed << 123.456 << endl; // 输出123.456,保留2位小数
return 0;
}
输出结果示例:
使用十六进制输出整数:7d
使用科学计数法输出小数:1.23457e+02
输出实数,保留2位小数:123.46
结束语
以上是C/C++中I/O进阶详解及其作用介绍的一些基本内容。I/O操作是计算机程序中必不可少的组成部分,希望本攻略可以帮助大家更好地理解和使用。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C/C++中I/O进阶详解及其作用介绍 - Python技术站