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++ 文件 -> 正文阅读

[C++知识库]C++ 文件

输入

char a,b;

  1. cin>>a 遇到空白字符就认为结束
  2. cin.get(a) ; b=cin.get() 输入一个字符给a,
    但是b=cin.get() 会承接输入字符给a后的一个enter,space,tab等,把他们继续留在缓冲区中
    因此a是一个字符,b是一个enter/space/tab
  3. cin.get(arrayname, size, s) 把数据输入到arrayname字符组中,但输入长度到达size时结束或者遇到字符s时结束
    arrayname必须是字符数组,就像下面的a[10]一样,不可以是string,
    size是最大的输入长度
    s为控制,遇到s那么当前输入结束,缓冲区中的s将被舍弃

cin.get(arrayname, size) 当遇到enter时会结束目前的输入,并不会删除缓冲区中的enter
cin.getline(arrayname, size) 当遇到entre时会结束目前的输入,但是会删除缓冲区中的enter

char a[10];   
cin.get(a,20);          
cout<<a<<endl;
cout<<sizeof(a)<<endl;
//输入输出
1.------------
iam
iam
10
2.------------
iamlixinxin
iamlixinxin
10
3.------------
iamlixinxinxinxixnixnxin
iamlixinxinxinxixni
10

总之 :getline会删除缓冲区中的内容,get 并不会删除缓冲区中的内容

输出

ios::left 在串的末尾插填入充字符以使其左对齐
ios::right 在前面插入字符使其右对齐
ios::fixed 将浮点数按照普通定点格式处理

// #include<iostream>
char c[30]="this is string";

cout.width(30);
cout.fill('*');
//靠左对齐
cout.setf(ios::left);
//输出c和---L1
cout<<c<<"---L1"<<endl;
上面的结果等价于下面的  
// #include<iomanip>
cout<<setw(30)<<left<<setfill('*')<<c<<"---L6"<<endl;

精度的控制1

showpoint: 表示打印浮点数的小数点和小数位数,即时显示的数值没有小数点,如果没有指定所需的小数点位数,则默认显示6个有效数组
setprecision(n) 表示显示n位有效数字 头文件是iomanip
fixed 是一种流操作符,表示浮点输出应该以固定点或者小数点表示法显示,也就是不使用科学计数法,一般与setprecision(n)一起使用,这是后n就表示小数点后面显示n位数字
当同时使用fixed和setprecision时,不需要使用showpoint
setbase(x) 可以控制精度

//include<iostream>
//include<iomanip>     
double d=-1231.23290;
cout.width(30);
cout<<d<<"---L3"<<"\n";   //没有设置精度,显示的是两位
cout<<d<<endl;    //-1231.23;
cout<<showpoint<<d<<endl;   //-1231.23    默认打印6位数字
cout<<setprecision(3)<<d<<endl;   //-1.23e+03   这里指的是1.23有三位数字
cout<<fixed<<d<<endl;   //cout<<fixed<<setprecision(3)<<d<<endl   1231.233  因为使用了fixed,并且规定了precision
cout<<fixed<<showpoint<<setprecision(3)<<d<<endl;  //这里设置了精度    1231.233 这里指的是.后面只有一位数字


精度的控制2

ios::oct 表示以八进制形式显示
ios::dec 表示以十进制形式显示
ios::hex 表示以十六进制形式显示

ios::showbase 表示为整数添加一个表示其进制的前缀
ios::showpoint 表示在浮点数表示的小数中强制插入小数点
ios::setw(n) 控制输出的间隔,默认是右对齐
ios::fixed 一种流操作符,表示浮点输出应该以固定点或者小数点表示法显示,也就是不使用科学计数法,

//下面这个例子其实是无效的,只是刚好默认的是十进制形式而已
// #include<iostream>
cout.setf(ios::dec|ios::showbase|ios::showpoint);    
cout<<d<<endl;  //-1231.23

//下面的例子是没有效果的
cout.setf(ios::hex|ios::showbase|ios::showpoint);   
cout<<d<<endl;  //-1231.23
//这个是有用的
cout.setf(ios::hex,ios::basefield);    //告诉除了hex有用之外,其他均需要取消设置
cout.setf(ios::showbase|ios::showpoint);        //这时设置的showbase是有用的,但是showpoint是不管用的
cout.width(30);
cout<<27<<"---L3"<<"\n";  // --------------------------0x1b---L3

?上面的例子中showbase是有用的,但是showpoint没有效果,并且将27换成浮点数比如19.19之后,得到的结果还是19.19,没有十六进制的转换,也没有十六进制的标志

//也可以这样写
cout.setf(ios::oct,ios::basefield);
cout<<100<<"----L5"<<"\n";

文件输入输出

#include<fstream>
ofstream    //文件的写操作,写入存储设备, 从内存中读出
ifstream 	//文件的读操作,存储设备读取到内存中,向内存写入
fstream		//读写操作,对打开的文件进行读写操作

文件的打开

void open ( const char * filename,
            ios_base::openmode mode = ios_base::in | ios_base::out );

mode表示的是文件打开的方式

ios::in 输入到内存 也就是读
ios::out 输出到内存 也就是写
ios::ate 初始位置:文件末尾
ios::app 所有输出附加在文件末尾
ios::trunc 如果文件已存在则先删除文件
ios::binary 二进制方式

#include<iostream>
#include<fstream>

using namespace std;

int main(int argc, char const *argv[])
{
    fstream ioFile;
    ioFile.open("./a.dat",ios::out);   //不会自己创建a.dat
    ioFile<<"李四"<< " "<< 73<<" "<< 98<<" "<<60<<endl;      //但是是从内存中读出到文件中, 重写a.dat文件
    ioFile<<"王五"<< " "<< 74<<" "<< 97<<" "<<61<<endl;
    ioFile<<"张三"<< " "<< 75<<" "<< 96<<" "<<62<<endl;
    ioFile<<"钱六"<< " "<< 76<<" "<< 95<<" "<<63<<endl;
    ioFile<<"黄七"<< " "<< 77<<" "<< 94<<" "<<64<<endl;
    ioFile.close();

    ioFile.open("./a.dat",ios::in|ios::binary); //以二进制的形式读取到内存
    char name[10];
    int chinese, math, computer;
    cout<<"姓名\t"<<"英语\t"<<"数学\t"<<"计算机\t"<<"总分"<<endl;  //从内存中读出
    ioFile>>name;
    while(!ioFile.eof())
    {
        ioFile>>chinese>>math>>computer;
        cout<<name<<"\t"<<chinese<<"\t"<<math<<"\t"<<computer<<"\t"<<chinese+math+computer<<endl;
        ioFile>>name;
    }
    ioFile.close();
    system("pause");
    return 0;
}

EOF
是end of file 的缩写,表示文字流(stream)的结尾,可以是文件,也可以是标准输入输出stdin

int main()
{
    char ch;
    ofstream out("./test.dat",ios::out|ios::binary);// 从内存中读取到test.dat
    for(int i=0;i<90;i++)
    {
        if(i>0&&(i%30)==0)
        {out.put('\n');
        out.put(i);
        out.put(' ');}
    }
    out.close();
    ifstream in("./test.dat",ios::in|ios::binary);
    while(in.get(ch))
    cout<<ch;
    in.close();
    return 0;
}
//result
                
 
  
              
 1 2 3 4 5 6 7 8 9 : ; 
< = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y

参考:
C++
C语言中文网
C++文件读写详解

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-05-07 11:00:54  更:2022-05-07 11:02:05 
 
开发: 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年5日历 -2024/5/21 2:33:53-

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