【C++grammar】格式化输出与I/O流函数

目录

  • 1、格式化输出
    • 1. setw manipulator(“设置域宽”控制符)
    • 2. setprecision manipulator(“设置浮点精度”控制符)
    • 3. setfill manipulator(“设置填充字符”控制符)
    • 4. Formatting Output in File Operation(在文件操作中格式化输入/输出)
    • 5.小练习
  • 2、用于输入/输出流的函数
    • 1. getline()
    • 2. get() and put()
    • 3. flush()
    • 4.getline()练习

1、格式化输出

1. setw manipulator(“设置域宽”控制符)

要包含头文件
setw(n) 设置域宽,即数据所占的总字符数

std::cout << std::setw(3) << 'a' <<  std::endl;
输出:
_ _a

setw()控制符只对其后输出的第一个数据有效

std::cout << std::setw(5) << 'a'<< 'b' << std::endl;
输出:
_ _ _ _ab

setw()的默认为setw(0),按实际输出。
如果输出的数值占用的宽度超过setw(int n)设置的宽度,则按实际宽度输出。

float f=0.12345;std::cout << std::setw(3) << f << std::endl;
输出:
0.12345

2. setprecision manipulator(“设置浮点精度”控制符)

setprecision(int n)

(1) 控制显示浮点数的有效位
(2) n代表数字,总位数,不包括小数点

#include <iostream>
#include <iomanip>
using namespace std;int main() {float f = 17 / 7.0;cout <<                    f << endl;cout << setprecision(0) << f << endl;cout << setprecision(1) << f << endl;cout << setprecision(2) << f << endl;cout << setprecision(3) << f << endl;cout << setprecision(6) << f << endl;cout << setprecision(8) << f << endl;return 0;}

VS效果:

2.42857
2.42857
2
2.4
2.43
2.42857
2.4285715

3. setfill manipulator(“设置填充字符”控制符)

setfill©
设置填充字符,即“<<"符号后面的数据长度小于域宽时,使用什么字符进行填充。

std::cout << std::setfill('*') << std::setw(5) << 'a' << std::endl;
输出:
****a

4. Formatting Output in File Operation(在文件操作中格式化输入/输出)

在这里插入图片描述

5.小练习

本部分展示内容如下;
任务1:展示setw和setfill
1、setw只对紧跟随其后的数据起作用
2、setfill指定填充字符
任务2:展示setprecision、fixed、showpoint、left、right
任务3:展示hexfloat

#include <iostream>
#include <iomanip>using std::cout;
using std::endl;
int main()
{//任务1:展示setw和setfill//cout << std::setw(4) << std::setfill('#') << "a";cout << std::setfill('#');for (int i = 0;i < 5;i++){cout << std::setw(i+2) << ' ' << endl;}//任务2:展示setprecision、fixed、showpoint、left、rightdouble pi = 3.1415926535897;cout << std::setprecision(6) << pi << endl;//定点数代表了小数点后几位cout << std::setprecision(6) << std::fixed << pi << endl;double y = 3.0;cout << y << endl;cout << std::showpoint << y << endl;cout << std::setw(20) << std::left << pi << endl;cout << std::setw(20) << std::right << pi << endl;//任务3:展示hexfloatcout << std::hexfloat << y << endl;cout << std::defaultfloat;cout << y << endl;cout << std::showpoint << y << endl;return 0;
}

在这里插入图片描述

2、用于输入/输出流的函数

1. getline()

'>>'运算符用空格分隔数据

对于文件内容:
Li Lei#Han Meimei#Adam
如下代码只能读入“Li”

ifstream input("name.txt");
std::string name;
input >> name;

如果用成员函数getline(char* buf, int size, char delimiter)读LiLei:

constexpr int SIZE{ 40 };
std::array<char , SIZE> name{};
while (!input.eof()) {// not end of fileinput.getline(&name[ 0 ] , SIZE , '#');std::cout << &name[ 0 ] << std::endl;
}

如果用非成员函数getline(istream& is, string& str, char delimiter)读LiLei:

std::string name2{};
while (!input.eof()) {std::getline(input, name2, '#');std::cout << n << std::endl;
}

2. get() and put()

get: read a character

//这一种需要将int类型强制转换为char类型
//char c = static_cast<char>(in.get());
int istream::get();
//char c; in.get(c);
istream& get (char& c);

put write a character

ostream& put (char c);

3. flush()

将输出流缓存中的数据写入目标文件:

ostream& flush();

用法:

cout.flush(); // 其它输出流对象也可以调用 flush()
cout << "Hello" << std::flush; // 与endl类似作为manipulator的调用方式

4.getline()练习

本部分要展示的内容如下;
任务1:展示istream::getline函数的用法
任务2:展示std::getline函数的用法

#include <iostream>
#include <fstream>
#include <array>
#include <string>
#include <filesystem>
using std::cout;
using std::endl;
using std::ifstream;
using std::string;int main()
{//打开文件std::filesystem::path p{ "scores.txt" };ifstream in{p};if (!in){cout << "Can't open file" << p << endl;std::abort();}//任务1:istream::getline函数constexpr int SIZE = 1024;std::array<char, SIZE> buf;	//&bufwhile (!in.eof()){in.getline(&buf[0], SIZE, '#');cout << &buf[0] << endl;}//由于上面的操作已经读到文件末尾,此时需要关闭重新打开文件in.close();in.open(p);//任务2:std::getline函数的用法std::string name1{""};while (!in.eof()){std::getline(in,name1,'#');cout << name1 << endl;}std::cin.get();return 0;}

效果:
在这里插入图片描述
默认情况下,getline函数使用换行符作为分隔符

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

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

相关文章

三、实战---爬取百度指定词条所对应的结果页面(一个简单的页面采集器)

在第一篇博文中也提及到User-Agent&#xff0c;表示请求载体的身份&#xff0c;也就是说明通过什么浏览器进行访问服务器的&#xff0c;这一点很重要。 ① UA检测 门户网站服务器会检测请求载体的身份。如果检测到载体的身份表示为某一款浏览器的请求&#xff0c;则说明这是一…

硕士毕业后去国外读法学博士_法学硕士的完整形式是什么?

硕士毕业后去国外读法学博士法学硕士&#xff1a;豆科大法师(拉丁)/法学硕士 (LLM: Legum Magister (Latin)/ Master of Law) LLM is an abbreviation of Legum Magister. It is in term of Latin which states the masters degree of Law. In the majority, LLM is generally …

android:layout_weight属性的简单使用

效果&#xff1a; style.xml <style name"etStyle2"><item name"android:layout_width">match_parent</item><item name"android:layout_height">wrap_content</item><item name"android:background"…

一、环境配置安装

一、Anaconda Ⅰ下载 最新版的anaconda可能会需要各种各样的问题&#xff0c;python3.6版本比较稳定&#xff0c;建议使用。 老铁们可以通过&#xff0c;Anaconda以前版本所自带Python版本&#xff0c;查看Anaconda所带的python版本 我用的是这个&#xff0c;Anaconda3-5.2.0…

二、PyTorch加载数据

一、常用的两个函数 dir()函数可以理解为打开某个包&#xff0c;help()可以理解为返回如何使用某个具体的方法 例如&#xff1a;若一个A钱包里面有a&#xff0c;b&#xff0c;c&#xff0c;d四个小包&#xff0c;则可通过dir(A)&#xff0c;打开该A钱包&#xff0c;返回a&…

leetcode 1005. K 次取反后最大化的数组和 思考分析

题目 给定一个整数数组 A&#xff0c;我们只能用以下方法修改该数组&#xff1a;我们选择某个索引 i 并将 A[i] 替换为 -A[i]&#xff0c;然后总共重复这个过程 K 次。&#xff08;我们可以多次选择同一个索引 i。&#xff09; 以这种方式修改数组后&#xff0c;返回数组可能…

三、TensorBoard

一、安装TensorBoard 管理员身份运行Anaconda Prompt&#xff0c;进入自己的环境环境 conda activate y_pytorch&#xff0c;pip install tensorboard 进行下载&#xff0c;也可以通过conda install tensorboard进行下载。其实通俗点&#xff0c;pip相当于菜市场&#xff0c;c…

详细讲解设计跳表的三个步骤(查找、插入、删除)

目录写在前面跳表概要查找步骤插入步骤删除步骤完整代码写在前面 关于跳表的一些知识可以参考这篇文章,最好是先看完这篇文章再看详细的思路->代码的复现步骤: Redis内部数据结构详解(6)——skiplist 关于跳表的插入、删除基本操作其实也就是链表的插入和删除&#xff0c;所…

php 类静态变量 和 常量消耗内存及时间对比

在对类执行100w次循环后&#xff0c; 常量最快&#xff0c;变量其次&#xff0c;静态变量消耗时间最高 其中&#xff1a; 常量消耗&#xff1a;101.1739毫秒 变量消耗&#xff1a;2039.7689毫秒 静态变量消耗&#xff1a;4084.8911毫秒 测试代码&#xff1a; class Timer_profi…

一个机器周期 计算机_计算机科学组织| 机器周期

一个机器周期 计算机机器周期 (Machine Cycle) The cycle during which a machine language instruction is executed by the processor of the computer system is known as the machine cycle. If a program contains 10 machine language instruction, 10 separate machine …

四、Transforms

transform是torchvision下的一个.py文件&#xff0c;这个python文件中定义了很多的类和方法&#xff0c;主要实现对图片进行一些变换操作 一、Transforms讲解 from torchvision import transforms#按着Ctrl&#xff0c;点击transforms进入到__init__.py文件中 from .transfo…

五、torchvision

一、下载CIFAR-10数据集 CIFAR-10数据集官网 通过阅读官网给的解释可以大概了解到&#xff0c;一共6w张图片&#xff0c;每张图片大小为3232&#xff0c;5w张训练图像&#xff0c;1w张测试图像&#xff0c;一共由十大类图像。 CIFAR10官网使用文档 torchvision.datasets.CIF…

转 设计师也需要了解的一些前端知识

一、常见视觉效果是如何实现的 一些事 关于文字效果 互联网的一些事 文字自身属性相关的效果css中都是有相对应的样式的&#xff0c;如字号、行高、加粗、倾斜、下划线等&#xff0c;但是一些特殊的效果&#xff0c;主要表现为ps中图层样式中的效果&#xff0c;css是无能为力的…

六、DataLoader

一、DataLoader参数解析 DataLoader官网使用手册 参数描述dataset说明数据集所在的位置、数据总数等batch_size每次取多少张图片shuffleTrue乱序、False顺序(默认)samplerbatch_samplernum_workers多进程&#xff0c;默认为0采用主进程加载数据collate_fnpin_memorydrop_las…

七、torch.nn

一、神经网络模块 进入到PyTorch的torch.nnAPI学习页面 PyTorch提供了很多的神经网络方面的模块&#xff0c;NN就是Neural Networks的简称 二、Containers torch.nn下的Containers 一共有六个模块&#xff0c;最常用的就是Module模块&#xff0c;看解释可以知道&#xff0c…

Java多线程初学者指南(8):从线程返回数据的两种方法

本文介绍学习Java多线程中需要学习的从线程返回数据的两种方法。从线程中返回数据和向线程传递数据类似。也可以通过类成员以及回调函数来返回数据。原文链接 从线程中返回数据和向线程传递数据类似。也可以通过类成员以及回调函数来返回数据。但类成员在返回数据和传递数据时有…

【C++进阶】 遵循TDD原则,实现平面向量类(Vec2D)

目录1、明确要实现的类的方法以及成员函数2、假设已经编写Vec2D&#xff0c;根据要求&#xff0c;写出测试代码3、编写平面向量类Vec2D,并进行测试4、完整代码5、最终结果1、明确要实现的类的方法以及成员函数 考虑到效率问题&#xff0c;我们一般将函数的参数设置为引用类型。…

md5模式 签名_MD的完整形式是什么?

md5模式 签名医师&#xff1a;医学博士/常务董事 (MD: Doctor of Medicine / Managing Director) 1)医学博士&#xff1a;医学博士 (1) MD: Doctor of Medicine) MD is an abbreviation of a Doctor of Medicine degree. In the field of Medicine, it is the main academic de…

八、卷积层

一、Conv2d torch.nn.Conv2d官网文档 torch.nn.Conv2d(in_channels, out_channels, kernel_size, stride1, padding0, dilation1, groups1, biasTrue, padding_modezeros, deviceNone, dtypeNone) 参数解释官网详情说明in_channels输入的通道数&#xff0c;如果是彩色照片通道…

【C++grammar】左值、右值和将亡值

目录C03的左值和右值C11的左值和右值将亡值在C03中就有相关的概念 C03的左值和右值 通俗的理解&#xff1a; (1) 能放在等号左边的是lvalue (2) 只能放在等号右边的是rvalue (3) lvalue可以作为rvalue使用 对于第三点可以举个例子&#xff1a; int x ; x 6; //x是左值&#…