基本的输入输出
简介
C++ 的 I/O 发生在流中,流是字节序列。
如果字节流是从设备(如键盘、磁盘驱动器、网络连接等)流向内存,这叫做输入操作。
如果字节流是从内存流向设备(如显示屏、打印机、磁盘驱动器、网络连接等),这叫做输出操作。
IO库头文件
<iostream>
<iostream>
该文件定义了 cin、cout、cerr 和 clog 对象,分别对应于标准输入流、标准输出流、非缓冲标准错误流和缓冲标准错误流。
#include <iostream>
标准输入输出库(cin
与cout
)
cin
与cout
)标准输入流cin
cin
预定义的对象 cin
是 iostream
类的一个实例。cin
对象附属到标准输入设备,通常是键盘。
cin
是与流提取运算符>>
结合使用的
int num;
cin >> num;
C++ 编译器根据要输入值的数据类型,选择合适的流提取运算符来提取值,并把它存储在给定的变量中。
流提取运算符 >> 在一个语句中可以多次使用,如果要求输入多个数据,可以使用如下语句:
cin >> name >> age;
效果等同于
cin >> name;
cin >> age;
标准输出流cout
cout
cout
对象"连接"到标准输出设备,通常是显示屏。
cout
是与流插入运算符 <<
结合使用的,如下所示:
cout << "Hello World!" << endl;
C++ 编译器根据要输出变量的数据类型,选择合适的流插入运算符来显示值。
<< 运算符被重载来输出内置类型(整型、浮点型、double 型、字符串和指针)的数据项。
流插入运算符 << 在一个语句中可以多次使用,如上面实例中所示,endl 用于在行末添加一个换行符。
实例:一个标准的输入、输出应用
要求:定义一个变量name
,并提示请输入名字
并换行,然后手动输入一个值,然后输出你的名字是{name}
源码:
#include <iostream>
using namespace std;
int main(){
char name[50];
cout << "请输入名字" << endl;
cin >> name;
cout << "你的名字是" << name;
}
C语言提供的输入/输出(scanf
与printf
)
scanf
与printf
)C语言头文件<cstdio>
<cstdio>
<cstdio>
是 C++ 标准库中的一个头文件,它包含了 C 语言标准 I/O 库的 C++ 封装,主要用于文件的输入和输出操作。
在使用 <cstdio>
库中的函数之前,需要在 C++ 程序的顶部包含这个头文件:
#include <cstdio>
scanf
与printf
scanf
与printf
使用例:
#include <cstdio>
int main() {
int x, y;
scanf("%d%d", &x, &y); // 读入 x 和 y
printf("%d\n%d", y, x); // 输出 y,换行,再输出 x
return 0;
}
%的应用
其中,%d
代表读入/输出的变量是一个有符号整型(int
型)的变量。
类似地:
%s
表示字符串。%c
表示字符。%lf
表示双精度浮点数 (double
)。%lld
表示长整型 (long long
)。根据系统不同,也可能是%I64d
。%u
表示无符号整型 (unsigned int
)。%llu
表示无符号长整型 (unsigned long long
),也可能是%I64u
。
除了类型标识符以外,还有一些控制格式的方式。许多都不常用,选取两个常用的列举如下:
%1d
表示长度为 1 的整型。在读入时,即使没有空格也可以逐位读入数字。在输出时,若指定的长度大于数字的位数,就会在数字前用空格填充。若指定的长度小于数字的位数,就没有效果。%.6lf
,用于输出,保留六位小数。
这两种运算符的相应地方都可以填入其他数字,例如 %.3lf
表示保留三位小数。
特殊地,%%
表示 %
,只能用在 printf
或 scanf
中,在其他字符串字面量中只需要简单使用 %
就好了。
取址运算符&
&
在3.1中,这个运算符被简要提到过,返回的是变量在内存中的地址。而 scanf 接收的参数就是变量的地址。
换行符
这是转义序列。在2.3中有提到。
\\
:\ 字符
\'
:' 字符
\"
:"字符
\?
:?字符
\b
:退格
\f
:换页:换行
:回车
:水平制表符
\v
:竖直制表符
此外,\0
表示空字符
处理整行输入(getline)
使用std::getline
函数可以读取包含空格的整行输入。
#include <iostream>
#include <string>
int main() {
std::string fullName;
std::cout << "Enter your full name: ";
std::getline(std::cin, fullName);
std::cout << "Hello, " << fullName << "!" << std::endl;
return 0;
}
Last updated