C++ 编程中最基本和最常见的 I/O 操作。
C++ 的 I/O 发生在流中,流是字节序列。
如果字节流是从设备(如键盘、磁盘驱动器、网络连接等)流向内存,这叫做输入操作。
如果字节流是从内存流向设备(如显示器、磁盘驱动器、网络连接等),这叫做输出操作。
在这就对标准输入输出流进行简单的介绍:
在C++中,标准输入输出流(I/O流)是一种用于处理输入和输出操作的机制。
这些流是建立在面向对象的基础上的,它们允许程序员以统一的方式来处理不同类型的输入
输出。
下面是C++中标准输入输出流的基本介绍:
标准流对象
C++预定义了四个I/O流对象,它们是:
cin:标准输入流(console input),用于从键盘读取数据。
cout:标准输出流(console output),用于将数据输出到屏幕。
cerr:标准错误流(console error output),用于将错误信息输出到屏幕,不经过缓冲区,直接显示。
clog:标准日志流(console log output),用于将日志信息输出到屏幕,通常经过缓冲区。
标准流头文件
为了使用这些标准流对象,我们在使用的时候需要包含头文件<iostream>。
#include <iostream>
使用命名空间std
标准流对象定义在命名空间 std 中,因此你需要使用 using namespace std;
或者显式地使用 std:: 前缀来访问这些对象。
using namespace std;
// 或者使用std::前缀
std::cout << "Hello, World!" << std::endl;
基本输入输出操作
以下是一些基本的输入输出操作:
输出
使用 << 运算符可以将数据插入到输出流中。
cout << "输出文本" << endl; // 输出文本并换行
cout << 10 << " " << 20.5; // 输出整数和浮点数
输入
使用 >> 运算符可以从输入流中提取数据。
int number;
cin >> number; // 从键盘读取一个整数到变量number中
endl和flush
endl 是一个操纵符,它在输出流中插入一个换行符并刷新输出缓冲区。
cout << "Hello" << endl; // 输出Hello并换行
flush 是一个操纵符,它只刷新输出缓冲区而不插入任何字符。
cout << "Hello" << flush; // 输出Hello并刷新缓冲区
格式化输出
C++的I/O流提供了格式化输出的功能,可以通过成员函数 setf 和操纵符来设置。
cout.setf(ios::fixed); // 设置浮点数以固定形式输出
cout.precision(2); // 设置浮点数精度为2位小数
cout << 10.45678 << endl; // 输出10.46
错误处理
I/O流类提供了错误状态标志,可以用来检查I/O操作是否成功。
if (cin.fail()) {
// 输入失败时的处理
cin.clear(); // 清除错误状态
cin.ignore(numeric_limits<streamsize>::max(), '\n'); // 忽略错误输入直到下一个换行符
}
上面就是C++标准输入输出流的基本介绍。
通过这些机制,C++提供了强大而灵活的输入输出功能。
想在C程序中使用cin和cout。作为输出输出,只需要在C文件中添加:
#include <iostream>
using namespace std;//可以避免导致全局命名冲突问题
#include <iostream>
using namespace std;//可以避免导致全局命名冲突问题
下面是两个使用C语言风格结合C++标准输入输出流的例子
例子1:整数加法计算器
这个例子将提示用户输入两个整数,然后计算它们的和并输出结果。
#include<stdio.h>
#include <iostream>
using namespace std;
int main() {
int num1, num2, sum;
cout << "请输入第一个整数: ";
cin >> num1;
cout << "请输入第二个整数: ";
cin >> num2;
sum = num1 + num2;
cout << "两个整数的和是: " << sum << endl;
getchar(); // 等待用户输入,防止程序立即退出
return 0;
}
例子2:简单的字符串处理
这个例子将提示用户输入一个字符串,然后将字符串中的所有小写字母转换为大写字母并输
出。
#include<stdio.h>
#include <iostream>
#include <cctype> // 用于字符类型转换
using namespace std;
int main() {
const int SIZE = 100;
char str[SIZE];
cout << "请输入一个字符串: ";
cin.getline(str, SIZE); // 使用getline来读取包含空格的字符串
for (int i = 0; str[i] != '\0'; ++i) {
str[i] = toupper(str[i]); // 将小写字母转换为大写
}
cout << "转换为大写后的字符串是: " << str << endl;
getchar(); // 等待用户输入,防止程序立即退出
return 0;
}
在上述的两个例子中,我们使用了C++的输入输出流 cin 和 cout 来处理用户输入和输出结果。
需要注意的是,虽然我们可以在C程序中使用C++的特性,但这并不是一种好的编程实践。
因为它可能会导致代码的可移植性和维护性降低。
通常我们在C程序中还是坚持使用C语言的库函数,如 printf 和 scanf 。