C++ 基础输入/输出

你好,未来的C++程序员!今天,我们将深入探讨C++中激动人心的输入和输出世界。如果你以前从未编写过一行代码,也不用担心——我们将从最基础的知识开始,逐步深入。在本教程结束时,你会惊讶地发现只需几行C++代码就能完成多少工作!

C++ Basic Input/Output

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的使用频率不如coutcerr,但知道它的存在是好的。

格式化输出

现在我们已经介绍了基础知识,让我们看看一些格式化输出的方法,使输出看起来更美观。

设置字段宽度

你可以使用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