C++ 基础输入/输出
你好,未来的C++程序员!今天,我们将深入探讨C++中激动人心的输入和输出世界。如果你以前从未编写过一行代码,也不用担心——我们将从最基础的知识开始,逐步深入。在本教程结束时,你会惊讶地发现只需几行C++代码就能完成多少工作!
I/O 库头文件
在我们开始向屏幕打印消息或从用户那里读取输入之前,我们需要包含必要的头文件。在C++中,输入和输出操作由iostream库处理。
让我们从一个简单的例子开始:
#include <iostream>
int main() {
// 你的代码将放在这里
return 0;
}
这是C++程序的基本结构。#include <iostream>
这一行告诉编译器包含iostream库,这使我们能够访问输入和输出功能。
标准输出流(cout)
现在,让我们学习如何在屏幕上显示文本。在C++中,我们使用cout
(发音为“see-out”)将输出发送到控制台。
#include <iostream>
using namespace std;
int main() {
cout << "Hello, World!";
return 0;
}
运行这个程序时,它将在屏幕上显示“Hello, World!”。让我们来分解一下:
-
cout
是标准输出流对象。 -
<<
运算符用于将数据发送到cout
。 - 双引号内的文本称为字符串字面量。
你还可以使用cout
打印多个项目:
cout << "My name is " << "Alice" << " and I am " << 25 << " years old.";
这将输出:“My name is Alice and I am 25 years old.”
添加新行
在输出后移动到新行,你可以使用endl
操作符或\n
字符:
cout << "First line" << endl;
cout << "Second line\n";
cout << "Third line" << '\n';
标准输入流(cin)
现在我们能够输出文本,接下来让我们学习如何从用户那里获取输入。我们使用cin
(发音为“see-in”)来实现这个目的。
#include <iostream>
using namespace std;
int main() {
int age;
cout << "How old are you? ";
cin >> age;
cout << "You are " << age << " years old!" << endl;
return 0;
}
在这个例子中:
- 我们声明了一个整数变量
age
来存储用户的输入。 - 我们使用
cout
提示用户输入他们的年龄。 -
cin >> age
从用户那里读取一个整数并将其存储在age
变量中。 - 最后,我们使用
cout
显示结果。
你还可以读取多个输入:
string name;
int age;
cout << "Enter your name and age: ";
cin >> name >> age;
cout << "Hello, " << name << "! You are " << age << " years old." << endl;
标准错误流(cerr)
虽然cout
对于正常输出很棒,但有时我们需要显示错误消息。这就是cerr
的用武之地。它类似于cout
,但它专门用于错误消息。
#include <iostream>
using namespace std;
int main() {
int denominator = 0;
if (denominator == 0) {
cerr << "Error: Cannot divide by zero!" << endl;
}
return 0;
}
使用cerr
有助于区分正常输出和错误消息,这在调试程序时可能至关重要。
标准日志流(clog)
最后,我们有clog
,它用于记录消息。它类似于cerr
,但它可能是缓冲的,意味着输出可能不会立即出现。
#include <iostream>
using namespace std;
int main() {
clog << "This is a log message." << endl;
return 0;
}
实际上,clog
的使用频率不如cout
和cerr
,但知道它的存在是好的。
格式化输出
现在我们已经介绍了基础知识,让我们看看一些格式化输出的方法,使输出看起来更美观。
设置字段宽度
你可以使用setw
操作符来设置字段的宽度:
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
cout << setw(10) << "Name" << setw(5) << "Age" << endl;
cout << setw(10) << "Alice" << setw(5) << 25 << endl;
cout << setw(10) << "Bob" << setw(5) << 30 << endl;
return 0;
}
这将产生一个对齐良好的输出:
Name Age
Alice 25
Bob 30
浮点数的精度
对于浮点数,你可以使用setprecision
来控制精度:
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
double pi = 3.14159265359;
cout << "Default pi: " << pi << endl;
cout << "Pi to 4 decimal places: " << fixed << setprecision(4) << pi << endl;
return 0;
}
输出:
Default pi: 3.14159
Pi to 4 decimal places: 3.1416
I/O 流对象和操作符总结
以下是我们学到的I/O流对象和操作符的便捷表格:
对象/操作符 | 描述 | 示例 |
---|---|---|
cout | 标准输出流 | cout << "Hello"; |
cin | 标准输入流 | cin >> variable; |
cerr | 标准错误流 | cerr << "Error!"; |
clog | 标准日志流 | clog << "Log message"; |
endl | 结束行 | cout << "Hello" << endl; |
setw | 设置字段宽度 | cout << setw(10) << "Name"; |
setprecision | 设置浮点数精度 | cout << setprecision(2) << 3.14159; |
就是这些!你已经学习了C++中输入和输出的基础知识。记住,熟能生巧,所以不要害怕尝试这些概念。试着以不同的方式组合它们,很快你就能轻松编写复杂的程序了。
编程愉快,愿你的输出总是如预期,输入总是有效!
Credits: Image by storyset