C++ 输入输出
C++中的输入输出操作是与用户交互和处理数据的基础。无论是从键盘读取数据,还是向屏幕输出结果,或者是与文件进行交互,掌握输入输出是编程的第一步。
输入输出流概述
在C++中,输入输出操作通过流(stream)来实现。流是一种抽象,它代表了数据的来源或目的地。C++提供了多种流类型,它们都包含在<iostream>
头文件中:
cin
:标准输入流,通常连接到键盘cout
:标准输出流,通常连接到屏幕cerr
:标准错误流,用于输出错误信息clog
:标准日志流,用于输出日志信息
这些流对象都是预定义的,无需创建即可使用。
标准输出 (cout)
标准输出流 cout
用于向屏幕输出数据。它与 <<
运算符(称为插入运算符)一起使用。
#include <iostream>
using namespace std;
int main() {
cout << "Hello, World!" << endl;
int age = 25;
cout << "I am " << age << " years old." << endl;
double pi = 3.14159;
cout << "The value of pi is approximately " << pi << endl;
return 0;
}
输出:
Hello, World!
I am 25 years old.
The value of pi is approximately 3.14159
提示
endl
用于插入换行符并刷新输出缓冲区。你也可以使用 '\n'
仅插入换行符。
标准输入 (cin)
标准输入流 cin
用于从键盘读取用户输入。它与 >>
运算符(称为提取运算符)一起使用。
#include <iostream>
using namespace std;
int main() {
int age;
cout << "请输入您的年龄: ";
cin >> age;
cout << "您的年龄是: " << age << " 岁" << endl;
string name;
cout << "请输入您的姓名: ";
cin >> name;
cout << "您好, " << name << "!" << endl;
return 0;
}
假设用户输入:
20
张三
输出:
请输入您的年龄: 20
您的年龄是: 20 岁
请输入您的姓名: 张三
您好, 张三!
警告
使用 cin >>
读取字符串时,它会在遇到空白字符(如空格、制表符、换行符)时停止读取。如果需要读取包含空格的整行文本,应使用 getline()
函数。
读取整行文本 (getline)
要读取包含空格的整行文本,可以使用 getline()
函数:
#include <iostream>
#include <string>
using namespace std;
int main() {
string fullName;
cout << "请输入您的全名: ";
// 注意:如果之前使用了cin>>,需要先清除缓冲区
// cin.ignore(numeric_limits<streamsize>::max(), '\n');
getline(cin, fullName);
cout << "您好, " << fullName << "!" << endl;
return 0;
}
假设用户输入:
张三 李四
输出:
请输入您的全名: 张三 李四
您好, 张三 李四!
输入输出的混合使用
在同一程序中混合使用不同的输入方法时,需要特别注意缓冲区问题:
#include <iostream>
#include <string>
using namespace std;
int main() {
int age;
string name, description;
cout << "请输入您的年龄: ";
cin >> age;
cout << "请输入您的姓名: ";
// 清除之前输入可能留下的换行符
cin.ignore();
getline(cin, name);
cout << "请简单介绍一下自己: ";
getline(cin, description);
cout << "\n个人信息摘要:" << endl;
cout << "年龄: " << age << endl;
cout << "姓名: " << name << endl;
cout << "介绍: " << description << endl;
return 0;
}
格式化输出
C++提供了多种方法来格式化输出,使其更加美观和易读。要使用这些功能,需要包含 <iomanip>
头文件。
#include <iostream>
#include <iomanip> // 用于格式控制
using namespace std;
int main() {
// 设置浮点数精度
double pi = 3.14159265358979;
cout << "默认精度的pi: " << pi << endl;
cout << "精确到2位小数的pi: " << fixed << setprecision(2) << pi << endl;
// 设置字段宽度和对齐
cout << "\n数字表格:" << endl;
cout << setw(10) << "数字" << setw(10) << "平方" << setw(10) << "立方" << endl;
for(int i = 1; i <= 5; i++) {
cout << setw(10) << i
<< setw(10) << i*i
<< setw(10) << i*i*i << endl;
}
// 设置填充字符
cout << "\n使用不同的填充字符:" << endl;
cout << setfill('-') << setw(30) << "" << setfill(' ') << endl;
// 设置进制
int num = 255;
cout << "十进制: " << dec << num << endl;
cout << "十六进制: 0x" << hex << uppercase << num << endl;
cout << "八进制: 0" << oct << num << endl;
return 0;
}
输出:
默认精度的pi: 3.14159
精确到2位小数的pi: 3.14
数字表格:
数字 平方 立方
1 1 1
2 4 8
3 9 27
4 16 64
5 25 125
使用不同的填充字符:
------------------------------
十进制: 255
十六进制: 0xFF
八进制: 0377
文件输入输出
除了标准输入输出外,C++还支持文件输入输出操作。这需要包含 <fstream>
头文件。