[C++] 1.1 std::cout、std::endl、std::cin
介绍
std::cout、std::endl 、std::cin 都位于 C++ 标准库 iostream 中。
std::cout
std::cout 它允许我们将数据发送到控制台并以文本形式打印。std::cout 先将数据发送到缓存中,C++自动将缓存中的数据按一定规则输出到控制台中。
示范
输出
字面量
#include <iostream> //引入标准输出、输入库
int main()
{
std::cout << "Hello world!"; // 输出 Hello world! 到控制台
std::cout << 4; // 输出 4 到控制台
return 0;
}输出
变量
#include <iostream> //引入标准输出、输入库
int main()
{
int number {18};
std::cout << number; // 输出 number 的值到控制台
return 0;
}混合输出
#include <iostream> //引入标准输出、输入库
int main()
{
int age {18};
std::cout << "My Name is Alex, and I am " << age << " years old.";
return 0;
}std::endl
std::endl 它先发送一个换行命令到缓存中,并立刻将缓存中的数据输出到控制台。
std::endl 和 \n 的效果上都是换行。但std::endl 是先换行并立刻刷新缓存到控制台。\n 只进行换行。因此当有大量换行需求时推荐时候 \n 来进行换行,因为每个std::endl 都执行一次刷新缓存会影响性能。
示范
#include <iostream> //引入标准输出、输入库
int main()
{
std::cout << "Hi" << std::endl;
std::cout << "My Name is Alex.";
return 0;
}std::cin
std::cout 将数据打印到控制台(使用插入运算符 << 提供数据),std::cin从键盘读取输入。通常使用提取运算符 >> 将输入数据放入变量中。同时 std::cout也是有缓存的。
示范
单次输入
#include <iostream>
int main()
{
std::cout << "Enter a numbers: ";
int x{};
std::cin >> x;
std::cout << "You entered " << x << '\n';
return 0;
}多次输入
#include <iostream>
int main()
{
std::cout << "Enter two numbers: ";
int x{};
std::cin >> x;
int y{};
std::cin >> y;
std::cout << "You entered " << x << " and " << y << '\n';
return 0;
}这个程序输入到两个变量中(这次作为单独的语句)。我们将运行这个程序两次。
运行 #1:当遇到
std::cin >> x;时,程序将等待输入。输入值4。输入4\n进入输入缓冲区,值4被提取到变量x中。当遇到
std::cin >> y;时,程序将再次等待输入。输入值5。输入5\n进入输入缓冲区,值5被提取到变量y中。最后,程序将打印You entered 4 and 5。这次运行的结果应该没有什么令人惊讶的地方。
运行 #2:当遇到
std::cin >> x时,程序将等待输入。输入4 5。输入4 5\n进入输入缓冲区,但只有4被提取到变量x(提取在空格处停止)。当遇到
std::cin >> y时,程序不会等待输入。相反,输入缓冲区中仍然存在的5被提取到变量y中。然后程序打印You entered 4 and 5。注意,在第二次运行中,当提取到变量
y时,程序没有等待用户输入额外的内容,因为输入缓冲区中已经存在可用的先前输入。
输入错误
#include <iostream>
int main()
{
std::cout << "Enter a numbers: ";
int x{};
std::cin >> x;
std::cout << "You entered " << x << '\n';
return 0;
}如果用户输入
5a并按下回车,缓冲区中会添加5a\n。5将被提取,转换为整数,并赋值给变量x。a\n将留在输入缓冲区中,供下一次提取使用。如果用户输入'b'并按回车键,
b\n将被添加到缓冲区中。因为b不是有效的整数,所以无法提取任何字符,这是一个提取失败。变量x将被设置为0,并且在输入流被清除之前,未来的提取操作都将失败。如果
std::cin由于之前提取失败而处于不良状态,那么这里什么也不会发生。变量x的值不会被改变。
<< 和 >> 的分辨
插入运算符(<<)和提取运算符(>>)都表示数据移动的方向。经常并搞混。一个简单的记忆方法:
std::cin和std::cout始终位于运算符的左侧。std::cout用于输出一个值(cout = character output)。std::cin用于获取输入值(cin = character input)。<<与std::cout一起使用,表示数据移动的方向。std::cout<< 4 将值 4 移动到控制台。>>与std::cin一起使用,表示数据移动的方向。std::cin>> x 将用户从键盘输入的值移动到变量 x 中。
文章作者:伊玖
文章链接:https://www.xiati.cc/archives/5e4f010d-f281-4dbf-8689-78ec031265d2
版权声明:本博客所有文章除特别声明外,均采用CC BY-NC-SA 4.0 许可协议,转载请注明出处!