IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C++ cout格式化输出、cin、简单文件I/O -> 正文阅读

[C++知识库]C++ cout格式化输出、cin、简单文件I/O

《C++ primer plus》摘抄总结,方便查阅回忆


cout

输出

  • 输出单字符:cout.put( ch );
  • 输出字符串:cout.write( const char_type* s);
  • 输出指定个数字符串:cout.write(const char_type* s, int cnt);

格式化输出

  • 进制(设置后永久生效)
    十进制:cout << dec << endl;
    十六进制:cout << hex << endl;
    八进制:cout << oct << endl;

  • 字段宽度(右对齐,设置后一次有效,填充字符默认空格)
    int width(int i);
    cout.width( i );

  • 设置填充字符(设置后永久生效)
    cout.fill( ‘*’ );

  • 设置浮点数的显示精度(设置后永久生效)
    cout.precision( int i);

  • 打印末尾的0和小数点
    cout.setf(ios_base::showpoint);

  • fmtflags setf(fmtflags );
    解析:第一个setf( )原型参数是一个fmtflags值,指出要设置哪一位。返回值是类型为fmtflags的数字,指出所有标记以前的设置。
    格式常量

常量含义
ios_base::boolalpha输入和输出bool值,可以为true或false
ios_base::showbase对于输出,使用C++基数前缀(0,0x)
ios_base::showpoint显示末尾的小数点
ios_base::uppercase对于16进制输出,使用大写字母,E表示法
ios_base::showpos在正数前面加上+
  • fmtflags setf(long, long);
    解析:第二个setf( )原型接受两个参数,并返回以前的设置
    格式常量
    第二个参数
    第一个参数 含 义

    ios_base ::basefield
    ios_base ::dec 使用基数10
    ios_base ::oct 使用基数8
    ios_base ::hex 使用基数16

    ios_base ::floatfield
    ios_base ::fixed 使用定点计数法
    ios_base ::scientific 使用科学计数法

    ios_base ::adjustfield
    ios_base ::left 使用左对齐
    ios_base ::right 使用右对齐
    ios_base ::internal 符号或基数前缀左对齐,值右对齐

标准控制符(比setf格式化更友好的方法,可以直接输出)

示例:cout << left << fixed; //同时打开左对齐和定点选项

其他控制符

控制符调用(与setf对应操作)
boolalphasetf(ios_base::boolalpha)
noboolalphaunsetf(ios_base::boolalpha)
showbasesetf(ios_base::showbase)
noshowbaseunsetf(ios_base::showbase)
showpointsetf(ios_base::showpoint)
noshowpointunsetf(ios_base::showpoint)
showpossetf(ios_base::showpos)
noshowposunsetf(ios_base::showpos)
uppercasesetf(ios_base::uppercase)
nouppercaseunsetf(ios_base::uppercase)
internalsetf(ios_base::internal, ios_base::adjustfield)
leftsetf(ios_base::left, ios_base::adjustfield)
rightsetf(ios_base::right, ios_base::adjustfield)
decsetf(ios_base::dec, ios_base::field)
hexsetf(ios_base::hex, ios_base::field)
octsetf(ios_base::oct, ios_base::field)
fixedsetf(ios_base::fixed, ios_base::floatfield)
scientificsetf(ios_base::scientific, ios_base::floatfield)

setfill(char) //cout << setfill(’*’) <<
setw(int) //cout << setw(5) <<
setprecision(int) //cout << setprecision(6) <<

cin

cin >> (抽取方式,只提取一般输入)检查输入的方法介绍:

不同版本的抽取运算符查看输入流的方法是相同的。
它们跳过空白(空格、换行符和制表符),直到遇到非空白字符。
在单字符模式下,>>运算符将读取该字符,将它放置到指定的位置。
在其他模式下,>>运算符将读取一个指定类型的数据。
也就是说,它读取从非空白字符开始,到与目标类型不匹配的第一个字符之间的全部内容。
在这里插入图片描述

输入

  • 单字符输入
    (1)成员函数:get(char & )
    cin.get( ch );
    遇到结尾时,cin.get(ch) == false
    (2)成员函数:get(void)
    ch = cin.get( );
    遇到结尾时, cin.get( )== EOF
  • 抽取运算符 >> 与 get( )的使用区分
    如果希望跳过空白,选择 >>
    如果希望处理每一个字符,选get( )
  • 字符串输入
    字符串输入成员:
istream & get(char *, int, char);
istream & get(char *, int);
istream & getline(char *, int, char);
istream & getline(char *, int);

argument1: 于放置输入字符串的内存单元的地址
argument2: 比要读取的最大字符数大1(额外的一个字符用于存储结尾的空字符,以便将输入存储为一个字符串)
argument3: 指定用作分界符的字符。(换行符)
上述函数都在读取最大数目的字符或遇到换行符后为止。

  • 其他istream方法
    read()、peek()、gcount()、putback()
  • read( )函数读取指定数目的字节,并将它们存储在指定的位置中。
    与getline( )和get( )不同的是,read( )不会在输入后加上空值字符,因此不能将输入转换为字符串。read( )方法不是专为键盘输入设计的,它最常与ostream write( )函数结合使用,来完成文件输入和输出。
  • peek( )函数返回输入中的下一个字符但不抽取输入流中的字符。也就是说,它使得能够查看下一个字符。假设要读取输入,直到遇到换行符或句点,则可以用peek( )查看输入流中的下一个字符,以此来判断
    是否继续读取。
  • gcount( )方法返回最后一个非格式化抽取方法读取的字符数。(字符是由get( )、getline( )、ignore( )或read( )方法读取的)
  • putback( )函数将一个字符插入到输入字符串中,被插入的字符将是下一条输入语句读取的第一个字符。
    putback( )允许将字符放到不是刚才读取的位置(不同istream)。

流状态

  • 设置状态
 cin.clear( ); //eofbit badbit failbit 全部清除
 cin.clear(eofbit); //清除eofbit
cin.setstate(eofbit);//设置eofbit为1
  • 读取状态
    (暂时不明白用途)
    在这里插入图片描述

文件I/O

写入步骤:

  • 创建一个ofstream对象来管理输出流;
  • 将该对象与特定的文件关联起来;
  • 以使用cout的方式使用该对象,唯一的区别是输出将进入文件,而不是屏幕。

读取步骤

  • 创建一个ifstream对象来管理输入流;
  • 将该对象与特定的文件关联起来;
  • 以使用cin的方式使用该对象。

元素解析

  • 头文件 <fstream>
  • 输出对象 ofstream
  • 输入对象 ifstream
#include <fstream>//此头文件内包含了<iostream>
ofstream fout;
ifstream fin;
  • 关联文件(一个流,可以同时关联多个文件)
fout.open("jar.txt");//关联打开文件jar.txt
//或者 ofstream fout("jar.txt");
//后续使用cout的方法与cout类似

fin.open("jar.txt");//后续使用cin的方法与cout类似
  • 连接状态检查
fin.is_open()
  • 关闭连接(//关闭连接,并不会删除流,等离开作用域,流对象会自动析构)
fout.close();
fin.close();

文件模式

用法:
ifstream fin(“bagels”, ios_base::in);
ofstream fout(“bagels”, ios_base::out | ios_base::app);

常量含义
ios_base::in打开文件,以便读取
ios_base::out打开文件,以便写入
ios_base::ate打开文件,并移到文件尾
ios_base::app追加到文件尾
ios_base::trunc如果文件存在,则截短文件
ios_base::binary二进制文件

C++和C的文件打开模式

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-09-08 10:29:29  更:2021-09-08 10:30:58 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 20:15:25-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码