当前位置: 首页 > news >正文

8.1 C++ 标准输入输出流

C/C++语言是一种通用的编程语言,具有高效、灵活和可移植等特点。C语言主要用于系统编程,如操作系统、编译器、数据库等;C语言是C语言的扩展,增加了面向对象编程的特性,适用于大型软件系统、图形用户界面、嵌入式系统等。C/C++语言具有很高的效率和控制能力,但也需要开发人员自行管理内存等底层资源,对于初学者来说可能会有一定的难度。

标准输出流: 首先我们演示标准的输入输出,其需要引入头文件<iostream>

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>using namespace std;int main(int argc, char* argv[])
{char str[] = "lyshark";int number = 0;cout << "hello: " << str << endl;cin >> number;if (number == 0){cerr << "Error msg" << endl;  // 标准的错误流clog << "Error log" << endl;  // 标准的日志流}int x, y;cin >> x >> y;                      // 一次可以接受两个参数freopen("./test.log", "w", stdout); // 将标准输出重定向到文件system("pause");return 0;
}

格式化输出: 在程序中一般用cout和插入运算符“<<”实现输出,cout流在内存中有相应的缓冲区。

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <iomanip>using namespace std;int main(int argc, char* argv[])
{cout << hex << 100 << endl;             // 十六进制输出cout << dec << 100 << endl;             // 十进制输出cout << oct << 100 << endl;             // 八进制输出cout << fixed << 10.053 << endl;        // 单浮点数输出cout << scientific << 10.053 << endl;   // 科学计数法cout << setw(10) << "hello" << setw(10) << "lyshark" << endl;  // 默认两个单词之间空格cout << setfill('-') << setw(10) << "hello" << endl; // 指定域宽,输出字符串,空白处以'-'填充for (int x = 0; x < 3; x++){cout << setw(10) << left << "hello" ; // 自动(left/right)对齐,不足补空格}cout << endl;system("pause");return 0;
}

单个字符输出: 流对象中,提供了专用于输出单个字符的成员函数put

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <iomanip>using namespace std;int main(int argc, char* argv[])
{char *str = "lyshark";for (int x = 6; x >= 0; x--)cout.put(*(str + x));  // 每次输出一个字符cout.put('\n');system("pause");return 0;
}

标准输入流: 通过测试cin的真值,判断流对象是否处于正常状态.

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <iomanip>using namespace std;int main(int argc, char* argv[])
{float grade;while (cin >> grade){if (grade >= 85)cout << grade << " good" << endl;}system("pause");return 0;
}

读取字符串: 通过getline函数,实现了从输入流中读取一行字符

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <iomanip>using namespace std;int main(int argc, char* argv[])
{char str[20];int x, y, z;cin >> x >> y >> z;cout << x << y << z;cin.getline(str, 20);        // 读入字符遇到\n结束读取cout << str << endl;cin.getline(str, 20, 'z');  // 读入字符遇到z字符才结束cout << str << endl;system("pause");return 0;
}

IO流实现文件读写: 使用<fstream>文件处理类,实现对文本文件的读写操作.

#include <iostream>
#include <string>
#include <fstream>using namespace std;void Write_File(string path, string text)
{ofstream ofs;//::app = 打开文件后追加 ::trunc = 打开文件后清空ofs.open(path, ios::out | ios::app);// 判断是否打开成功,成功则写入if (ofs.is_open())ofs << text << endl;
}void Read_File(string path)
{ifstream ifs;ifs.open(path, ios::in);if (ifs.is_open()){char buffer[1024];while (!ifs.eof()){ifs.getline(buffer, sizeof(buffer));cout << buffer << endl;}}
}int main(int argc, char *argv[])
{Write_File("c:/lyshark.log", "hello lyshark");Write_File("c:/lyshark.log", "hello admin");Read_File("c:/lyshark.log");system("pause");return 0;
}

字符串与数字判断: 判断用户输入的是数字还是字符串,并输出到屏幕上.

#include <iostream>
#include <string>using namespace std;int main(int argc, char *argv[])
{char ch = cin.peek();        // 获得输入字符if (ch >= '0' && ch <= '9'){int number;cin >> number;cout << "number is :" << number << endl;}else{char buffer[1024];cin >> buffer;cout << "string is: " << buffer << endl;}system("pause");return 0;
}

输入数字判断案例: 让用户输入数字如果是1-10之间的则结束,否则继续循环

#include <iostream>
#include <string>using namespace std;int main(int argc, char *argv[])
{int number;while (true){cin >> number;if (number > 0 && number <= 10){cout << "number is: " << number << endl;break;}cin.clear();    // 重置标志位cin.sync();     // 清空缓冲区}system("pause");return 0;
}

IO流实现排序并存盘: 将文件in.log中的整数排序后输出到out.log中.

#include <iostream>
#include <cstdlib>
#include <fstream>using namespace std;// 使用qsort排序的回调函数
int MyCompare(const void *x, const void *y)
{return *((int *)x) - *((int *)y);
}int main(int argc, char *argv[])
{int Array[10] = { 0 };int index = 0;// in.log 存放十个数 ==> 5 6 9 2 0 1 3 6 7 9ifstream srcFile("c://in.log", ios::in); //以文本模式打开in.txt备读ofstream destFile("c://out.txt", ios::out); //以文本模式打开out.txt备写// 以空格为单位读出文件中的数据放入数组int tmp;while (srcFile >> tmp)Array[index++] = tmp;// 调用排序函数qsort(Array, 10, sizeof(int), MyCompare);// 输出排序后的数,并写入文件保存for (int x = 0; x < 10; x++){cout << "Array => " << Array[x] << endl;destFile << Array[x] << " ";                // 回写到文件}srcFile.close();destFile.close();system("pause");return 0;
}

读/写二进制流结构: 假设我们定义student结构,我们使用二进制方式写入到文件中.

#include <iostream>
#include <fstream>using namespace std;struct Student
{char szName[20];int age;
};int main(int argc, char *argv[])
{struct Student stu;strcpy(stu.szName, "lyshark");stu.age = 33;// 将结构中的数据写入到磁盘ofstream outFile("c://student.log", ios::out | ios::binary);outFile.write((char *)&stu, sizeof(stu));outFile.close();// 从文件流中读取数据struct Student read_stu;ifstream inFile("c://student.log", ios::in | ios::binary);inFile.read((char *)&read_stu, sizeof(read_stu));cout << read_stu.szName << read_stu.age << endl;inFile.close();system("pause");return 0;
}

利用IO流实现文件拷贝: 通过使用get函数实现,从文件中一次读取一个字节,并将其拷贝到另一个文件中.

#include <iostream>
#include <fstream>using namespace std;int main(int argc, char *argv[])
{ifstream inFile("c://lyshark.exe", ios::binary | ios::in);  //以二进制读模式打开文件ofstream outFile("c://test.exe", ios::binary | ios::out);  //以二进制写模式打开文件char ch;while (inFile.get(ch))  // 每次读取一个字符{//cout << ch << " ";outFile.put(ch);    // 每次写入一个字符}outFile.close();inFile.close();system("pause");return 0;
}

本文作者: 王瑞
本文链接: https://www.lyshark.com/post/e54e2d59.html
版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!

相关文章:

8.1 C++ 标准输入输出流

C/C语言是一种通用的编程语言&#xff0c;具有高效、灵活和可移植等特点。C语言主要用于系统编程&#xff0c;如操作系统、编译器、数据库等&#xff1b;C语言是C语言的扩展&#xff0c;增加了面向对象编程的特性&#xff0c;适用于大型软件系统、图形用户界面、嵌入式系统等。…...

hive往es映射表写数据报错

hive是基于Hadoop的一个数据仓库工具&#xff0c;用来进行数据提取、转化、加载&#xff0c;这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。hive数据仓库工具能将结构化的数据文件映射为一张数据库表&#xff0c;并提供SQL查询功能&#xff0c;能将SQL语句转…...

2023年【广东省安全员A证第四批(主要负责人)】考试试卷及广东省安全员A证第四批(主要负责人)模拟考试

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 广东省安全员A证第四批&#xff08;主要负责人&#xff09;考试试卷根据新广东省安全员A证第四批&#xff08;主要负责人&#xff09;考试大纲要求&#xff0c;安全生产模拟考试一点通将广东省安全员A证第四批&#x…...

YOLOv5算法改进(15)— 如何去更换Neck网络(包括代码+添加步骤+网络结构图)

前言:Hello大家好,我是小哥谈。在学习完了如何去更换主干网络之后,接着就让我们通过案例的方式去学习下如何去更换Neck网络。本篇文章的特色就是比较浅显易懂,附加了很多的网络结构图,通过结构图的形式向大家娓娓道来,希望大家学习之后能够有所收获!🌈 前期回顾: YO…...

用Nginx搭建一个具备缓存功能的反向代理服务

在同一台服务器上&#xff0c;使用nginx提供服务&#xff0c;然后使用openresty提供反向代理服务。 参考《Ubuntu 20.04使用源码安装nginx 1.14.0》安装nginx。 参考《用Nginx搭建一个可用的静态资源Web服务器》搭建静态资源Web服务器&#xff0c;但是/nginx/conf/nginx.conf里…...

YOLOv5改进实战 | 更换主干网络Backbone(三)之轻量化模型Shufflenetv2

前言 轻量化网络设计是一种针对移动设备等资源受限环境的深度学习模型设计方法。下面是一些常见的轻量化网络设计方法: 网络剪枝:移除神经网络中冗余的连接和参数,以达到模型压缩和加速的目的。分组卷积:将卷积操作分解为若干个较小的卷积操作,并将它们分别作用于输入的不…...

【Markdown】 Markdown 操作备忘录

To Do List 显示目前todo list 的状态 getLogger() 单例类&#xff0c; 通过引入模块&#xff0c;获取单例日志对象 结果可视化调研 模型结果保存及测试 - [ ] getLogger() 单例类&#xff0c; 通过引入模块&#xff0c;获取单例日志对象 - [ ] 结果可视化调研 - [x] 模型结果…...

【自动化测试】基于Selenium + Python的web自动化框架

一、什么是Selenium&#xff1f; Selenium是一个基于浏览器的自动化工具&#xff0c;她提供了一种跨平台、跨浏览器的端到端的web自动化解决方案。Selenium主要包括三部分&#xff1a;Selenium IDE、Selenium WebDriver 和Selenium Grid&#xff1a;  1、Selenium IDE&…...

zookeeper连接客户端操作数据时报错Socket is not connected

文章目录 一、报错信息二、问题描述三、原因分析&#xff1a;四、解决方案&#xff1a; 一、报错信息 DEBUG org.apache.zookeeper.ClientCnxnSocketNIO - Ignoring exception during shutdown input java.net.SocketException: Socket is not connectedat sun.nio.ch.Net.tra…...

mysql select语句中from 之后跟查询语句

概念&#xff1a;将from后面的查询语句放在FROM的后面&#xff0c;则查询到的结果&#xff0c;就会被当成一个“表”; 这里有一个特别要注意的地方&#xff0c;放在FROM后面的子查询&#xff0c;必须要加别名。 select dui.id,dui.party_service_id mes_id, dui.party_id,dui.…...

Yolov8小目标检测(26):多尺度空洞注意力(MSDA) | 中科院一区顶刊 DilateFormer 2023.9

💡💡💡本文独家改进:多尺度空洞注意力(MSDA)采用多头的设计,在不同的头部使用不同的空洞率执行滑动窗口膨胀注意力(SWDA),全网独家首发,创新力度十足,适合科研 多尺度空洞注意力(MSDA) | 亲测在红外弱小目标检测涨点,map@0.5 从0.755提升至0.784 💡�…...

NLP:从头开始的文本矢量化方法

一、说明 NLP 项目使用文本&#xff0c;但机器学习算法不能使用文本&#xff0c;除非将其转换为数字表示。这种表示通常称为向量&#xff0c;它可以应用于文本的任何合理单位&#xff1a;单个标记、n-gram、句子、段落&#xff0c;甚至整个文档。 在整个语料库的统计 NLP 中&am…...

Kotlin 中 apply、let、also、run的区别

apply apply 函数接收一个目标并回来该目标自身。它答应您在目标上履行一些操作&#xff0c;同时仍然回来原始目标。 fun <T> T.apply(block: T.() -> Unit): TT 是目标的类型&#xff0c;block 是一个 lambda 表达式&#xff0c;能够在该目标上履行一些操作。在这个…...

Android JKS MD5 SHA1 公钥生成 私钥生成 APP备案 内容获取

1 查看 jks keytool -list -v -keystore /Users/lipengfei/Desktop/android/androidproject.jks密钥库类型: jks 密钥库提供方: SUN您的密钥库包含 1 个条目别名: ddgj 创建日期: 2018-11-16 条目类型: PrivateKeyEntry 证书链长度: 1 证书[1]: 所有者: CNcn, OUcn, Ocn, Lcn,…...

常用linux的命令(持续更新)

1.防火墙相关 centos7 防火墙 查状态&#xff1a;systemctl status firewalld.service 关闭&#xff1a;systemctl disable firewalld.service 重启生效 关闭&#xff1a;systemctl stop firewalld.service 马上生效 systemctl stop firewalld 临时关闭防火墙 systemctl disabl…...

《动手学深度学习 Pytorch版》 8.7 通过时间反向传播

8.7.1 循环神经网络的梯度分析 本节主要探讨梯度相关问题&#xff0c;因此对模型及其表达式进行了简化&#xff0c;进行如下表示&#xff1a; h t f ( x t , h t − 1 , w h ) o t g ( h t , w o ) \begin{align} h_t&f(x_t,h_{t-1},w_h)\\ o_t&g(h_t,w_o) \end{ali…...

2023-10-20 游戏开发-cocos旧版本2.0.6-下载地址-记录

官方下载地址: Cocos Creator 下载 - 轻量高效的开发引擎 Tags cocos/cocos-engine GitHub cocos creater 旧版本: Tool/Package/REAMDE.md adofsauron/CocosCreatorFAQ - Gitee.com v2.0.6版本: Mac版&#xff1a;http://cocos2d-x.org/filedown/CocosStudioForMac-v2.0.…...

Python 框架学习 Django篇 (三) 链接数据库

只要你是做后端开发的&#xff0c;那么就离不开各种数据库&#xff0c;Django框架对各种数据库都非常友好&#xff0c;比如常见的PostgreSQL、MySQL、SQLite、Oracle&#xff0c;django都对他们提供了统一调用api&#xff0c;我们这里主要使用mysql数据库作为演示 一、ORM机制 …...

【debug】安装diffusion的bug解决合集

环境问题 ImportError: cannot import name ‘CLIPImageProcessor’ from ‘transformers’ (D:\Python\lib\site-packages\transformers_init_.py) https://github.com/huggingface/transformers/issues/23340 解决&#xff1a;查看更详细信息&#xff0c;安装环境 transfor…...

面试题 01.02. 判定是否互为字符重排

​​题目来源&#xff1a; leetcode题目&#xff0c;网址&#xff1a;面试题 01.02. 判定是否互为字符重排 - 力扣&#xff08;LeetCode&#xff09; 解题思路&#xff1a; 遍历计数即可。 解题代码&#xff1a; class Solution { public:bool CheckPermutation(string s1, …...

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…...

国防科技大学计算机基础课程笔记02信息编码

1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制&#xff0c;因此这个了16进制的数据既可以翻译成为这个机器码&#xff0c;也可以翻译成为这个国标码&#xff0c;所以这个时候很容易会出现这个歧义的情况&#xff1b; 因此&#xff0c;我们的这个国…...

Nginx server_name 配置说明

Nginx 是一个高性能的反向代理和负载均衡服务器&#xff0c;其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机&#xff08;Virtual Host&#xff09;。 1. 简介 Nginx 使用 server_name 指令来确定…...

微服务商城-商品微服务

数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成

厌倦手动写WordPress文章&#xff1f;AI自动生成&#xff0c;效率提升10倍&#xff01; 支持多语言、自动配图、定时发布&#xff0c;让内容创作更轻松&#xff01; AI内容生成 → 不想每天写文章&#xff1f;AI一键生成高质量内容&#xff01;多语言支持 → 跨境电商必备&am…...

精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南

精益数据分析&#xff08;97/126&#xff09;&#xff1a;邮件营销与用户参与度的关键指标优化指南 在数字化营销时代&#xff0c;邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天&#xff0c;我们将深入解析邮件打开率、网站可用性、页面参与时…...

Mac下Android Studio扫描根目录卡死问题记录

环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中&#xff0c;提示一个依赖外部头文件的cpp源文件需要同步&#xff0c;点…...

力扣-35.搜索插入位置

题目描述 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...

重启Eureka集群中的节点,对已经注册的服务有什么影响

先看答案&#xff0c;如果正确地操作&#xff0c;重启Eureka集群中的节点&#xff0c;对已经注册的服务影响非常小&#xff0c;甚至可以做到无感知。 但如果操作不当&#xff0c;可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...

嵌入式常见 CPU 架构

架构类型架构厂商芯片厂商典型芯片特点与应用场景PICRISC (8/16 位)MicrochipMicrochipPIC16F877A、PIC18F4550简化指令集&#xff0c;单周期执行&#xff1b;低功耗、CIP 独立外设&#xff1b;用于家电、小电机控制、安防面板等嵌入式场景8051CISC (8 位)Intel&#xff08;原始…...