C++系列五:输入/输出

简介: C++系列五:输入/输出


1. 输入

输入是指从外部源获得数据的过程, C++中可通过键盘或文件等外部源来获取输入数据。

(1)cin

cin是C++标准库中的一个输入流对象,用于从标准输入设备(通常是键盘)读取数据。cin是一个用于读取不同类型数据的操作符。

e.g. 从用户输入读取整数:

#include <iostream>
using namespace std;
int main() {
    int num;
    cout << "Enter an integer: ";
    cin >> num;
    cout << "You entered: " << num << endl;
    return 0;
}

运行上述代码,输出:

Enter an integer: 10

You entered: 10

上述代码中可以看出,首先需要包含iostream头文件,然后使用using namespace std; 声明std命名空间。之后定义了一个整型变量num,并提示用户输入一个整数。最后,使用cin>>num语句将输入值存储在num变量中。需要注意,>> 是一个操作符,用于从输入流中提取数据。

(2)getline

getline是用于读取一行文本的函数,可从文件或标准输入读取一行字符,并将该行保存到一个字符串变量中。

e.g. 读取一行文本

#include <iostream>
#include <string>
using namespace std;
int main() {
    string str;
    cout << "Enter your name: ";
    getline(cin, str);
    cout << "Hello, " << str << endl;
    return 0;
}

上述代码中,定义了一个字符串变量str,然后提示用户输入姓名。接下来,使用getline(cin, str)函数读取用户输入的整行数据,并将其存储在str变量中。最后,输出欢迎消息,其中包括用户输入的名称。

(3)文件输入

除了从键盘获取输入外,C++还允许从文件中读取输入。要进行文件输入,需要打开一个文件,然后使用cin重定向输入流。

e.g. 从文件中读取输入

#include <iostream>
#include <fstream>
using namespace std;
int main() {
    ifstream infile("input.txt");
    int num;
    while (infile >> num) {
        cout << num << endl;
    }
    infile.close();
    return 0;
}

上述代码中,首先使用ifstream打开名为“input.txt”的文件,然后使用while循环读取文件中的每个整数并将其输出到屏幕上。最后,使用infile.close()关闭输入文件。

2. 输出

输出是指将数据发送到外部源的过程,C++中可通过控制台输出或将数据写入文件来进行输出。以下是C++中最常见的输出函数:

(1)cout

cout是C++标准库中的一个输出流对象,用于将数据打印到标准输出设备(通常是屏幕)。

e.g.

#include <iostream>
using namespace std;
int main() {
    cout << "Hello, world!" << endl;
    return 0;
}

上述代码中,使用cout输出“Hello, world!”字符串,并使用endl语句添加新行。

(2)文件输出

除了将数据输出到控制台外,C++还允许将数据写入文件。要进行文件输出,需打开一个文件并使用cout重定向输出流。

e.g. 将数据写入文件

#include <iostream>
#include <fstream>
using namespace std;
int main() {
    ofstream outfile("output.txt");
    outfile << "Hello, world!" << endl;
    outfile.close();
    return 0;
}

上述代码中,首先使用ofstream打开名为“output.txt”的输出文件,然后使用outfile << “Hello, world!”语句将字符串写入文件。最后,使用outfile.close()关闭输出文件。

3. 格式化输出

某些情况下需要以特定格式输出数据,例如浮点数保留小数点后两位。C++提供了一些格式化输出函数,可用于控制输出数据的格式。

(1)setw

setw()函数用于设置输出字段宽度。

e.g. 在一个字段宽度为10的列中输出一个整数

#include <iostream>
#include <iomanip>
using namespace std;
int main() {
    int num = 12345;
    cout << setw(10) << num << endl;
    return 0;
}

运行上述代码,输出:

12345

上述代码中,将num变量输出到屏幕时,使用了setw(10)函数来指定输出字段的宽度。

(2)setprecision

setprecision()函数用于设置浮点数的精度。

e.g. 将浮点数保留小数点后两位

#include <iostream>
#include <iomanip>
using namespace std;
int main() {
    double num = 3.1415926535;
    cout << setprecision(2) << num << endl;
    return 0;
}

运行上述代码,输出:

3.14

上述代码中使用setprecision(2)函数来指定浮点数的输出精度。

(3)fixedscientific

fixedscientific是两个控制浮点数输出格式的函数。fixed函数用于以固定小数位输出浮点数,而scientific函数用于以科学计数法输出浮点数。

#include <iostream>
#include <iomanip>
using namespace std;
int main() {
    double num = 1234567890.123456;
    cout << fixed << setprecision(2) << num << endl;
    cout << scientific << setprecision(2) << num << endl;
    return 0;
}

运行上述代码,输出

1234567890.12

1.23e+009

上述代码中,使用fixed函数以固定格式输出浮点数,而使用scientific函数则以科学计数法输出浮点数。

4. 总结

20年前学习C++语言的幼稚记录

相关文章
|
数据库
阿里云DTS数据迁移和数据同步的差异性分析
阿里云DTS作为一款常用的数据库表迁移工具,提供了功能非常类似的两个功能:数据迁移、数据同步。阿里云DTS产品官网对这两个功能模块进行了简单的区分: 场景1:存量数据批量迁移,建议使用数据迁移功能。 场景2:增量数据实时同步,建议使用数据同步功能。 实际上,无论是数据迁移还是数据同步,都可以做 “结构初始化”+“全量数据迁移”+“增量迁移”,因此两者功能差异并不明显。笔者在多个项目实践DTS数据迁移,在简单需求场景下,将DTS的数据迁移、数据同步进行对比和总结。
|
4月前
|
编解码 人工智能 安全
【部署难题全解】OpenClaw 2.6.4 本地部署常见问题与解决方法(内含安装包)
OpenClaw 2.6.4 部署所有难题一次性破解!安装报错、汉化乱码、文件损坏、连接异常,每一个问题都有清晰可操作的解决办法,附带纯净安装包,不用反复试错,省时又省心。
|
5月前
|
Linux 编译器 C语言
CentOS 7 安装 compat-gcc-44-c++-4.4.7-8.el7.x86_64.rpm 详细步骤(含依赖解决)
本指南详解在CentOS 7上安装兼容版GCC 4.4 C++编译器(compat-gcc-44-c++)的完整流程:先卸载旧版本,再下载RPM包,批量安装必要依赖,最后用rpm或yum localinstall安装并验证g++44 --version。适用于老旧C++项目编译需求。(239字)
|
存储 人工智能 数据处理
阿里云CTO周靖人:全面投入升级AI大基建
9月19日,在2024杭州云栖大会上,阿里云CTO周靖人表示,阿里云正在围绕AI时代,树立一个AI基础设施的新标准,全面升级从服务器到计算、存储、网络、数据处理、模型训练和推理平台的技术架构体系,让数据中心成为一台超级计算机,为每个AI和应用提供高性能、高效的算力服务。
24065 15
|
8月前
|
JSON 安全 Java
6.鉴权
本文介绍基于Spring Security与JWT实现客户端Token认证方案,涵盖从登录生成Token到接口验签的完整流程。通过WebSecurityConfig配置安全规则,结合JWTLoginFilter与JWTAuthenticationFilter实现登录验证与请求拦截,利用TokenAuthenticationService完成JWT生成与解析。支持角色与权限控制,构建RBAC权限体系,保障Spring Boot应用安全。
|
9月前
|
人工智能 监控 安全
Veeam Data Platform 13.0 发布 - 数据保护和管理解决方案
Veeam Data Platform 13.0 发布 - 数据保护和管理解决方案
411 0
Veeam Data Platform 13.0 发布 - 数据保护和管理解决方案
|
人工智能 自然语言处理 机器人
对话阿里云 CIO 蒋林泉:AI 时代,企业如何做好智能化系统建设?
10 月 18 日, InfoQ《C 位面对面》栏目邀请到阿里云 CIO 及 aliyun.com 负责人蒋林泉(花名:雁杨),就 AI 时代企业 CIO 的角色转变、企业智能化转型路径、AI 落地实践与人才培养等主题展开了讨论。
24683 69
对话阿里云 CIO 蒋林泉:AI 时代,企业如何做好智能化系统建设?
|
人工智能 自然语言处理 程序员
提交通义灵码创新实践文章,重磅好礼只等你来!
通义灵码创新实践征集赛正式开启,发布征文有机会获得重磅好礼+流量福利,快来参加吧!
23584 21
|
Cloud Native 安全 应用服务中间件
云原生网关哪家强:Sealos 网关血泪史
云原生网关哪家强:Sealos 网关血泪史
1021 107
|
搜索推荐 领域建模 调度
(上)原理都懂,就是不会建模?来,顶尖数据模型走一波
(上)原理都懂,就是不会建模?来,顶尖数据模型走一波