热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

c++语言的输入输出流库

1.c++语言标准输入输出流<1>控制符的用法#include<iostream>#include<iomanip>usingnamespa

1.c++语言标准输入输出流

<1>控制符的用法

#include 
#include 
using namespace std;
int main(){
    int x=30,y=300,z=1024;
    cout<<"Decimal:"<" "<" "<//按十进制输出
    cout<<"Octal:"<" "<" "<//按八进制输出
    cout<<"Hexademical:"<" "<" "<//按十六进制输出
    cout<//设置数值中字母大写输出
    cout<<"Hexademical:"<" "<" "<//
    cout<//设置数值中字母小写输出
    cout<<"Hexademical:"<" "<" "<//
    cout<<"Decimal:"<" "<" "<//恢复按十进制输出

    return 0;
}

  运行结果:

 

#include 
#include 
using namespace std;
int main(){
    int a=10;
    int b=1000;
    cout<5)<endl;
    cout<2)<<b;
    return 0;
}

setw操作符主要用来输出预留空格数,若空间多余则向右对齐;若空间不够,按数据长度输出。

 

#include 
#include 
using namespace std;
int main(){
    cout<'*')//设置填充符号为"*"
        <2)<<"OK"<<endl
        <3)<<"OK"<<endl
        <4)<<"OK"<<endl;
    cout<' ');//恢复默认设置,填充空格
    return 0;
}

 

 

 

#include 
#include 
using namespace std;
int main(){
    double test=22.0/7;//c++语言默认的流输出数值有效位为六位
    cout<endl;
    cout<0)<//c++语言最小有效位为1位,此处取1
        <1)<endl
        <2)<endl
        <3)<endl
        <4)<endl;
    cout<fixed);
    cout<8)<endl;
    //setiosflags(ios::fixed)与setprecision(8)合用,控制小数点右边的数字个数为八个
    cout<6);

    return 0;
}

 

 

 

#include 
#include 
using namespace std;
int main(){
    double x=66,y=-8.246;
    cout<" "<endl;
    cout<//设置强制显示小数点和无效0
    cout<" "<endl;

    return 0;
}

 

 

 

#include 
#include 
using namespace std;
int main(){
    double x=66,y=-8.246;
    cout<" "<endl;
    cout<//设置强制显示正号
    cout<" "<endl;

    return 0;
}

 

<2>.使用ios类成员函数

#include 
using namespace std;
int main(){
    char str[250];
    cout<<"请输入一字符串:\n";
    cin.getline(str,sizeof(str),',');
    cout<<"输入的字符串为:"<endl;

    return 0;
}

从键盘读取一行文本,每遇到一个逗号就结束一次输入。

   运行结果:

 

2.文件输入输出流

文件分为ASCII文件和二进制文件

 文件的打开与关闭

ofstream、ifstream、fstream类

#include 
#include 
#include <string>
using namespace std;
int main(){
    ofstream myf("d:\\myabc.txt");
    char txt[255];
    while (1)
    {
        cin.getline(txt,255);
        if(strlen(txt)==0)
            break;
        myf<endl;
    }
    return 0;
}

此程序可由用户输入任意一些字符串并按行保存到磁盘文件上。

 

#include 
#include 
#include <string.h>
int main(){
    ifstream myf("d:\\myabc.txt",ios::nocreate);
    if(myf.fail()){
        cout<<"file not exist!"<<endl;
        return 0;
    }
    char txt[255];
    myf>>txt;
    while(!myf.eof()){
        cout<endl;
        myf>>txt;
    }
    return 0;
}

该程序将上面文件内容输出到屏幕上

 

 

先定义文件流对象,再与文件连接

ifstream file;

file.open("myfile.txt",ios::in);//打开文件

file.close();//关闭文件

 

 

<1>文件的读写

#include 
#include 
#include <string>
#include 
using namespace std;
int main(){
    ifstream ifile;
    ofstream ofile;
    ifile.open("d:\\myabc.txt");
    ofile.open("d:\\213.txt");
    if(ifile.fail()||ofile.fail()){
        cerr<<"open file fail\n";
        return EXIT_FAILURE;//EXIT_FAILURE在cstdlib库中定义
                               //用于向操作系统报告终止不成功
    }
    char ch;
    ch=ifile.get();
    while(!ifile.eof()){
        ofile.put(ch);
        ch=ifile.get();
    }
    ifile.close();
    ofile.close();
    return 0;
}

文件复制

 

 

 

有时,程序用户需要交互输入数据文件名,则可使用下面的程序代码:

ifstream ifile;

string fileName;

cout<<"Enter the input file name:";

cin>>fileName;

ifile.open(fileName.c_str());

 

 

 

<2>文本文件的读写

要求:输入一个学生的姓名、学号、年龄和住址存入文本文件中,然后读出该文件的内容。

#include 
#include 
#include <string>
#include 
using namespace std;
class student{
public:
    char name[10];
    int num;
    int age;
    char addr[15];
    friend ostream & operator<<(ostream &out,student &s);
    friend istream & operator>>(istream &in,student &s);
};
ostream & operator<<(ostream &out,student &s){
    out<" "<" "<" "<endl;
    return out;
}
istream & operator>>(istream &in,student &s){
    in>>s.name>>s.num>>s.age>>s.addr;
    return in;
}
int main(){
    ofstream ofile;
    ifstream ifile;
    ofile.open("d:\\s.txt");
    student s;
    for(int i=1;i<=3;i++){
        cout<<"请输入第"<"个学生的姓名 学号 年龄 住址"<<endl;
        cin>>s;
        ofile<<s;
    }
    ofile.close();
    cout<<"\n读出文件内容"<<endl;
    ifile.open("d:\\s.txt");
    ifile>>s;
    while(!ifile.eof()){
        cout<<s;
        ifile>>s;
    }
    ifile.close();

    return 0;
}

 

<3>二进制文件的读写

文本文件和二进制文件最根本的区别在于进行I/O操作时对"\n"字符的解释方式不同。

通过随机数产生函数rand()产生20个整数,逐个将这些数以二进制方式写入文件file.dat中,然后读出这些数,在内存中对它们进行升序排序,再将排序后的数以文本方式逐个写入file.out文件中。

#include 
#include 
#include 
#include 
#include 
using namespace std;
void sort(int[],int);
int main(){
    fstream dat,out;                                   //定义文件流对象
    int i,a[20],b[20];
    dat.open("file.dat",ios::binary|ios::out|ios::in);//为读写打开二进制文件
    if(!dat){
        cout<<("cannot open file\n");
        exit(0);
    }
    for(i=0;i<20;i++){
        a[i]=rand();
        dat.write((char*)&a[i],sizeof(int));           //将20个数读入文件
    }
    dat.seekg(0);                                      //将文件指针移至文件头
    for(i=0;i<20;i++)
        dat.read((char*)&b[i],sizeof(int));            //读出20个数
    sort(b,20);                                        //调用排序函数
    out.open("file.out",ios::out);                     //为输出打开文本文件
    if(!out){
        cout<<"cannot open file\n";
        exit(0);
    }
    for(i=0;i<20;i++){
        out<" ";
    }
    out<<"\n";
    for(i=0;i<20;i++){                                  //将排序后数据写入文本文件
        cout<10)<<b[i];
        if((i+1)%5==0)
            cout<<endl;
    }
    out.close();                                         //文本文件
    dat.close();
    return 0;

}
void sort(int x[],int m){                                 //排序函数
    int i,j,k,t;
    for(i=0;i1;i++){
        k=i;
        for(j=i+1;j)
            if(x[j]j;
            if(k!=i){
                t=x[i];x[i]=x[k];x[k]=t;
            }
    }
}

运行结果:

 <4>文件的随机访问

#include 
#include 
using namespace std;
int main(){
    fstream f("DATA",ios::in|ios::out|ios::binary);
    int i;
    for(i=0;i<20;i++)//先向文件中写20个二进制位表示的整数,无格式
        f.write((char*)&i,sizeof(int));
    streampos pos=f.tellp();//记录下当前的写指针
    for(i=20;i<40;i++)//再向文件中写20个二进制位表示的整数,无格式
        f.write((char*)&i,sizeof(int));
    f.seekg(pos);//将读指针定位在pos所指的位置
    f.read((char*)&i,sizeof(int));
    cout<<"the data stored is"<endl;
    f.seekp(0,ios::beg);//移到文件开始
    for(i=100;i<140;i++)//重写文件中的内容
        f.write((char*)&i,sizeof(int));
    f.seekg(pos);
    f.read((char*)&i,sizeof(int));//将读指针定位在pos所指的位置
    cout<<"the data stored is"<endl;
    return 0;
}

运行结果:

  

 


推荐阅读
  • 在处理 XML 数据时,如果需要解析 `` 标签的内容,可以采用 Pull 解析方法。Pull 解析是一种高效的 XML 解析方式,适用于流式数据处理。具体实现中,可以通过 Java 的 `XmlPullParser` 或其他类似的库来逐步读取和解析 XML 文档中的 `` 元素。这样不仅能够提高解析效率,还能减少内存占用。本文将详细介绍如何使用 Pull 解析方法来提取 `` 标签的内容,并提供一个示例代码,帮助开发者快速解决问题。 ... [详细]
  • 属性类 `Properties` 是 `Hashtable` 类的子类,用于存储键值对形式的数据。该类在 Java 中广泛应用于配置文件的读取与写入,支持字符串类型的键和值。通过 `Properties` 类,开发者可以方便地进行配置信息的管理,确保应用程序的灵活性和可维护性。此外,`Properties` 类还提供了加载和保存属性文件的方法,使其在实际开发中具有较高的实用价值。 ... [详细]
  • 大类|电阻器_使用Requests、Etree、BeautifulSoup、Pandas和Path库进行数据抓取与处理 | 将指定区域内容保存为HTML和Excel格式
    大类|电阻器_使用Requests、Etree、BeautifulSoup、Pandas和Path库进行数据抓取与处理 | 将指定区域内容保存为HTML和Excel格式 ... [详细]
  • Java Socket 关键参数详解与优化建议
    Java Socket 的 API 虽然被广泛使用,但其关键参数的用途却鲜为人知。本文详细解析了 Java Socket 中的重要参数,如 backlog 参数,它用于控制服务器等待连接请求的队列长度。此外,还探讨了其他参数如 SO_TIMEOUT、SO_REUSEADDR 等的配置方法及其对性能的影响,并提供了优化建议,帮助开发者提升网络通信的稳定性和效率。 ... [详细]
  • 深入剖析Java中SimpleDateFormat在多线程环境下的潜在风险与解决方案
    深入剖析Java中SimpleDateFormat在多线程环境下的潜在风险与解决方案 ... [详细]
  • 在C++程序中,文档A的每一行包含一个结构体数据,其中某些字段可能包含不同数量的数字。需要将这些结构体数据逐行读取并存储到向量中,随后不仅在控制台上显示,还要输出到新创建的文档B中。希望得到指导,感谢! ... [详细]
  • 在Android平台中,播放音频的采样率通常固定为44.1kHz,而录音的采样率则固定为8kHz。为了确保音频设备的正常工作,底层驱动必须预先设定这些固定的采样率。当上层应用提供的采样率与这些预设值不匹配时,需要通过重采样(resample)技术来调整采样率,以保证音频数据的正确处理和传输。本文将详细探讨FFMpeg在音频处理中的基础理论及重采样技术的应用。 ... [详细]
  • 本文探讨了如何利用Java代码获取当前本地操作系统中正在运行的进程列表及其详细信息。通过引入必要的包和类,开发者可以轻松地实现这一功能,为系统监控和管理提供有力支持。示例代码展示了具体实现方法,适用于需要了解系统进程状态的开发人员。 ... [详细]
  • 使用Maven JAR插件将单个或多个文件及其依赖项合并为一个可引用的JAR包
    本文介绍了如何利用Maven中的maven-assembly-plugin插件将单个或多个Java文件及其依赖项打包成一个可引用的JAR文件。首先,需要创建一个新的Maven项目,并将待打包的Java文件复制到该项目中。通过配置maven-assembly-plugin,可以实现将所有文件及其依赖项合并为一个独立的JAR包,方便在其他项目中引用和使用。此外,该方法还支持自定义装配描述符,以满足不同场景下的需求。 ... [详细]
  • 在软件开发过程中,经常需要将多个项目或模块进行集成和调试,尤其是当项目依赖于第三方开源库(如Cordova、CocoaPods)时。本文介绍了如何在Xcode中高效地进行多项目联合调试,分享了一些实用的技巧和最佳实践,帮助开发者解决常见的调试难题,提高开发效率。 ... [详细]
  • 本文详细解析了 Android 系统启动过程中的核心文件 `init.c`,探讨了其在系统初始化阶段的关键作用。通过对 `init.c` 的源代码进行深入分析,揭示了其如何管理进程、解析配置文件以及执行系统启动脚本。此外,文章还介绍了 `init` 进程的生命周期及其与内核的交互方式,为开发者提供了深入了解 Android 启动机制的宝贵资料。 ... [详细]
  • 出库管理 | 零件设计中的状态模式学习心得与应用分析
    出库管理 | 零件设计中的状态模式学习心得与应用分析 ... [详细]
  • 题目要求维护一个数列,并支持两种操作:一是查询操作,语法为QL,用于查询数列末尾L个数中的最大值;二是更新操作,用于修改数列中的某个元素。本文通过ST表(Sparse Table)优化查询效率,确保在O(1)时间内完成查询,同时保持较低的预处理时间复杂度。 ... [详细]
  • 本文探讨了使用JavaScript在不同页面间传递参数的技术方法。具体而言,从a.html页面跳转至b.html时,如何携带参数并使b.html替代当前页面显示,而非新开窗口。文中详细介绍了实现这一功能的代码及注释,帮助开发者更好地理解和应用该技术。 ... [详细]
  • 经过两天的努力,终于成功解决了半平面交模板题POJ3335的问题。原来是在`OnLeft`函数中漏掉了关键的等于号。通过这次训练,不仅加深了对半平面交算法的理解,还提升了调试和代码实现的能力。未来将继续深入研究计算几何的其他核心问题,进一步巩固和拓展相关知识。 ... [详细]
author-avatar
温蚊童鞋_612
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有