C++之输入与输出

文章目录

  • C++ 输入输出 (I/O) 详解
    • 基本 I/O 组件(input / output)
    • 基本输出 (cout)
    • 基本输入 (cin)
    • 格式化输出
    • 文件 I/O
    • 字符串流
    • 常见 I/O 方法比较
    • 错误处理
    • 其他
      • 保留小数

C++ 输入输出 (I/O) 详解

C++ 使用标准库中的 iostream 库来处理输入输出操作。主要包括以下几个关键组件:

基本 I/O 组件(input / output)

  1. 标准流对象

    • cin - 标准输入流 (通常关联键盘)
    • cout - 标准输出流 (通常关联显示器)
    • cerr - 标准错误流 (无缓冲)
    • clog - 标准日志流 (有缓冲)
  2. 头文件

    #include <iostream>  // 基本I/O操作
    #include <iomanip>   // 格式化输出
    

基本输出 (cout)

#include <iostream>int main() {std::cout << "Hello, World!" << std::endl;  // 输出字符串并换行std::cout << "Number: " << 42 << "\n";      // 输出多个值,使用\n换行return 0;
}

基本输入 (cin)

#include <iostream>int main() {int age;std::cout << "Enter your age: ";std::cin >> age;  // 从键盘读取输入std::cout << "You are " << age << " years old.\n";return 0;
}

格式化输出

使用 <iomanip> 中的操纵符:

#include <iostream>
#include <iomanip>int main() {double pi = 3.141592653589793;// 设置精度(保留4位有效数字)std::cout << std::setprecision(4) << pi << std::endl;  // 输出 3.142// 固定小数位数(保留两位小数)std::cout << std::fixed << std::setprecision(2) << pi << std::endl;  // 输出 3.14// 设置宽度和对齐std::cout << std::setw(10) << std::left << "Hello" << std::setw(10) << "World" << std::endl;return 0;
}

文件 I/O

使用 <fstream> 头文件:

#include <iostream>
#include <fstream>int main() {// 写入文件std::ofstream outFile("example.txt");if (outFile.is_open()) {outFile << "This is a line.\n";outFile << "This is another line.\n";outFile.close();} else {std::cerr << "Unable to open file for writing.\n";}// 读取文件std::ifstream inFile("example.txt");std::string line;if (inFile.is_open()) {while (getline(inFile, line)) {std::cout << line << '\n';}inFile.close();} else {std::cerr << "Unable to open file for reading.\n";}return 0;
}

字符串流

使用 <sstream> 头文件:

#include <iostream>
#include <sstream>int main() {// 字符串转其他类型std::string str = "123.45";std::istringstream iss(str);double num;iss >> num;std::cout << "Number: " << num << std::endl;// 其他类型转字符串std::ostringstream oss;oss << "The answer is " << 42;std::string result = oss.str();std::cout << result << std::endl;return 0;
}

常见 I/O 方法比较

方法描述适用场景
cin >> var格式化输入读取基本类型数据
getline(cin, str)读取一行读取字符串,包含空格
cin.get()读取单个字符需要逐个字符处理
cin.read()读取原始数据二进制数据读取
cout <<格式化输出基本输出
cout.write()原始数据输出二进制数据输出

错误处理

#include <iostream>int main() {int number;std::cout << "Enter an integer: ";while (!(std::cin >> number)) {std::cin.clear();  // 清除错误状态std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');  // 忽略错误输入std::cout << "Invalid input. Please enter an integer: ";}std::cout << "You entered: " << number << std::endl;return 0;
}

这些是 C++ 中输入输出的基本概念和常用方法。根据具体需求,可以组合使用这些技术来实现复杂的数据输入输出操作。

其他

保留小数

使用setprecision()/cout.precision()之后,如果不在修改精度,则之后所有的数据输出都是按照设置的精度来输出(fixed同理)

fixed 操作符可能最重要的还是当它与 setprecision 操作符一起使用时,setprecision 即可以以一种新的方式显示。它将指定浮点数字的小数点后要显示的位数,而不是要显示的总有效数位数。而这通常正是我们想要的。

表示浮点输出应该以固定点或小数点表示法显示:
#include<bits/stdc++.h>
using namespace std;
int main(){double a;int b;cin>>a>>b;cout<<setprecision(3)<<fixed<<a/b<<endl<<(b<<1);return 0;
}

1,浮点数格式化输出:

  • setprecision(3):设置输出精度为3位有效数字
  • fixed:使用固定小数表示法(小数点表示法)
  • 组合使用fixed和setprecision(3)表示保留小数点后3位

2, 位运算:

  • b << 1:将b的二进制表示左移1位,相当于乘以2

3, 输入输出:

  • 输入两个数a和b ◦
  • 第一行输出a/b的结果(保留3位小数)
  • 第二行输出b左移1位的结果

4,注意事项

  1. 当b为0时,a/b会导致浮点数除以零错误
  2. fixed会强制以小数形式显示,即使结果是整数(如4.000)
  3. << 在C++ 中既是流插入运算符也是位左移运算符,注意上下文区分

欢迎给出意见或者相关内容推荐🌹🌹🌹
未完待续…………

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/76180.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

流动的梦境:GPT-4o 的自回归图像生成深度解析

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

eBay多账号安全运营技术体系:从环境隔离到智能风控的工程化实践

一、多账号运营风险模型解析 &#xff08;技术化重构关联检测机制&#xff09; 环境指纹维度&#xff1a; 浏览器指纹参数&#xff1a;Canvas/WebGL渲染特征&#xff08;差异度要求≥98%&#xff09; 设备指纹参数&#xff1a;GPU型号/声卡特征&#xff08;识别准确率92%&…

Vue 3 模板引用(Template Refs)详解与实战示例

Vue 3 模板引用&#xff08;Template Refs&#xff09;详解与实战示例 引言 在 Vue 开发中&#xff0c;通常推荐使用 响应式数据 (ref 和 reactive) 进行数据绑定&#xff0c;而不是直接操作 DOM。但是&#xff0c;在某些情况下&#xff0c;我们确实需要访问某个组件或 DOM 元…

《Operating System Concepts》阅读笔记:p495-p511

《Operating System Concepts》学习第 44 天&#xff0c;p495-p511 总结&#xff0c;总计 17 页。 一、技术总结 1.cache (1)定义 A cache is a region of fast memory that holds copies of data. (2)cache 和 buffer 的区别 The difference between a buffer and a cac…

通过Spring Boot集成WebSocket进行消息通信

文章目录 通过Spring Boot集成WebSocket进行消息通信1. 创建 Spring Boot 项目2. 添加 WebSocket 依赖3. 配置 WebSocket4. 创建 WebSocket 处理器5. 创建控制器&#xff08;可选&#xff09;6. 前端页面测试7. 运行项目注意事项 通过Spring Boot集成WebSocket进行消息通信 1.…

rust服务应用开发框架

原文链接:https://i68.ltd/notes/posts/20250313-rust-wasm-fw/ spin 开源开发工具&#xff0c;用于构建和运行由 WebAssembly 提供支持的无服务器应用程序Spin 是一个框架&#xff0c;用于使用 WebAssembly 构建&#xff0c;部署和运行快速&#xff0c;安全和可组合的云端微…

迷茫的一周 2025/3/28

Java篇 在Java中&#xff0c;以下数据类型中,需要内存最多的是(long) - A选项byte&#xff1a;占用1个字节&#xff08;8位&#xff09; - B选项long&#xff1a;占用8个字节&#xff08;64位&#xff09; - C选项Object&#xff1a;Object本身是一个引用&#xff0c;在32位JVM…

Elasticsearch 的搜索功能

Elasticsearch 的搜索功能 建议阅读顺序&#xff1a; Elasticsearch 入门Elasticsearch 搜索&#xff08;本文&#xff09;Elasticsearch 搜索高级Elasticsearch 高级 1. 介绍 使用 Elasticsearch 最终目的是为了实现搜索功能&#xff0c;现在先将文档添加到索引中&#xff0c…

docker镜像拉取失败

hub.docker.com中提供的docker pull命令在服务器拉取镜像时报错Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers) 这个错误通常表明Docker客户…

EFISH-SBC-RK3576 + 5G模组:无线工业相机与分布式AI质检‌

在智能制造与仓储物流场景中&#xff0c;传统有线工业相机存在部署成本高、灵活性差等痛点。‌eFish-SBC-RK3576‌ 通过 ‌5G无线传输 分布式NPU协同‌&#xff0c;实现跨产线、跨工厂的AI质检系统&#xff0c;检测效率提升300%&#xff0c;布线复杂度降低90%。 ‌1. 系统架构…

AI提示词编写方法全解析

在人工智能日益融入生活的当下&#xff0c;如何巧妙编写提示词&#xff0c;成为充分发挥AI效能的关键。以下为您详细介绍几种实用的AI提示词编写方法。 角色扮演法&#xff1a;赋予AI独特身份 角色扮演法旨在让AI模拟特定角色。当我们渴望AI以历史人物、虚拟角色的视角进行表…

【docker】docker应用举例

# Docker创建python项目 ## 1. 准备 Dockerfile 首先,在项目根目录下创建一个 Dockerfile,用于定义 Docker 镜像的构建步骤。 # 使用官方 Python 镜像作为基础镜像 FROM python:3.9-slim # 设置工作目录 WORKDIR /app # 复制项目文件到容器中 COPY . /app # 安装项目依赖…

【大模型】SpringBoot整合LangChain4j实现RAG检索实战详解

目录 一、前言 二、LangChain4j 介绍 2.1 什么是LangChain4j 2.2 LangChain4j 主要特点 2.3 Langchain4j 核心组件 三、RAG介绍 3.1 什么是RAG 3.2 RAG工作流程 3.2.1 补充说明 3.3 Embedding模型 3.3.1 RAG实际使用步骤 3.3.2 什么是Embedding 3.3.3 Embedding 技…

基于 Trae 的超轻量级前端架构设计与性能优化实践

一、技术背景与选型动因 在单页应用(SPA)复杂度指数级增长的今天&#xff0c;传统框架在千级列表渲染场景下普遍存在首屏延迟(>1.5s)、内存占用过高(>200MB)等问题。基于对 Webpack Bundle Analyzer 的长期观察&#xff0c;我们发现核心问题集中在&#xff1a; • 类组件…

dotnet core web api linux主机公网发布

效果: 发布流程: 创建一个ASP.NET Core Web API 工程 输入工程名 选择框架版本为.net 9.0及选择配置HTTPS和启用OPENAPI 启动调试 确认证书

WPS宏开发手册——JSA语法练习

目录 系列文章3、JSA语法练习3.1、运算练习3.2、比较练习3.3、if else练习3.4、for 练习3.5、字符串、数组方法练习3.6、语义转编程练习题 系列文章 使用、工程、模块介绍 JSA语法 JSA语法练习题 Excel常用Api 后续EXCEL实战、常见问题、颜色附录&#xff0c;持…

计算机网络面经(一)

以下为个人总结&#xff0c;图源大部分会来自网络和JavaGuide 网络分层模型 OSI七层模型 各层的常见协议 应用层 用户接口 HTTP, FTP, SMTP, DNS表示层 数据格式转换 SSL/TLS, JSON, JPEG会话层 会话管理 NetBIOS, RPC, SSH传输层 端到端通信 TCP, UDP, QUIC网络层 路由寻址…

《JVM考古现场(十四):混沌重启——从量子永生到宇宙热寂的终极编译》

开篇&#xff1a;熵火燎原量子递归的终极突围 "当《诛仙剑阵》的时空冻结算法遭遇量子递归暴走&#xff0c;当Project Omega的热寂代码在JVM的十三维堆内存中坍缩&#xff0c;此刻我们即将撕开归墟晶壁&#xff0c;直面从玻尔兹曼大脑到冯诺依曼架构的终极对决&#xff0…

【django】2-2 (django配置) 数据库配置、缓存配置

文章目录 5 数据库配置5.1 常用配置项5.2 数据库配置示例5.3 其它数据库配置选项 6 缓存6.1 常用配置项6.2 内置的缓存后端6.3 缓存配置示例6.4 缓存中间件的配置 创建django项目后&#xff0c;会自动生成初始的项目文件如下&#xff1a; manage.py # 管理django项目…

【博客】使用GithubAction自动同步obisidian和hexo仓库

使用Github Action自动同步obisidian和hexo仓库&#xff0c;避免手动操作。 本文首发于❄慕雪的寒舍 1. 烦恼 先来说说慕雪现在的笔记和博客是怎么管理的吧&#xff0c;我正在使用两套笔记软件 思源笔记&#xff1a;私密性高一些&#xff0c;不是博客的笔记都在这里面。由于思…