C++ 流

iostream_test.cpp

#include <iostream>
using namespace std;
#include <stdlib.h>
#include <iomanip>

void cin_test(){
    /*
    if(-12) //0 为 false 非0[正数+负数] 为 true
        cout<<"ok"<<endl;
    else
        cout<<"error"<<endl;
    */
    int i;
    //c语言中不能做错误判断
    if(cin>>i)
        cout<<i<<endl;
    else{
        cout<<"error"<<endl;
        cin.clear();
        cin.ignore(); //清空缓冲区
    }
}


void string_test(){
    string s1="itao"; //运算符重载
    string s2("love"); //构造函数
    cout<<s2.c_str()<<'\t'<<s1.c_str()<<endl;
}

iostream继承层次




/*C++语言: 输出格式化*/
void cout_test(){
    int i=15;
    cout<<dec<<i<<endl; //十进制 15
    cout<<hex<<i<<endl; //十六进制 f
    cout<<oct<<i<<endl; //八进制 17
    /*需要引入 iomanip*/
    cout<<setbase(16)<<i<<endl; //setbase(n) n为进制[16 10 8]
    cout<<setw(10)<<setfill('a')<<setbase(16)<<i<<"++++"<<endl; //aaaaaaaaaf++++
    cout<<setw(10)<<setfill('a')<<setbase(16)<<setiosflags(ios::left)<<i<<"++++"<<endl; //faaaaaaaaa++++
    //setw(int n) :填充宽度
    //setfiell(char c): 填充字符 和 填充宽度 配合使用
    //setiosflags(ios::left) //向左对齐  默认向右对齐
    float f = 0.0141534;
    cout<<setprecision(3)<<f<<endl;//setprecision(int n)填充精度 0.0142
    cout<<setiosflags(ios::fixed)<<f<<endl; //0.014
    /*
    setiosflags(ios::fixed)
        以固定的小数位输出
        ios 是枚举

    */
    cout<<setiosflags(ios::scientific)<<f<<endl; //0.0142
    /*
    setiosflags(ios::scientific)
        scientific:以科学计数法显示
    */
    cout<<resetiosflags(ios_base::_Fmtflags::fixed)<<i<<endl;
    /*
    
    */
}

输入输出流格式控制—流实现

 

输入输出流格式控制—流对象成员控制输出

 

输入输出流格式控制-综合案例



/*C语言: 输出 格式化*/
void printf_test(){
    float f =  0.0141534;
    printf("%+10.3f", f);
    printf("%s\n", "itao");
    printf("%-10.3f", f);
    printf("%s\n", "itao");
    /*
    打印结果:
            +0.0142itao
        0.0142     itao
        Press any key to continue
    结论:
        %10.3f
        10为填充 10 个空字符
        .3表示 填充精度
        +:表示右对齐 【默认】
        -:表示左对齐
    //printf("%010.3f", f);
    //10前面的0 表示 f 前面补 10 个 0
    */
}

int int_to_string(){
    int i=12;
    char j[3];
    j[0]=i/10+48;
    j[1]=i%10+48;
    j[2]=0;
    printf("%s\n", j);
    printf("%c\n", 49);
    printf("%c\n", 50);
    //cout<<"Hello Wold"<<endl;
    return 0;
}

string_test.cpp

#include <iostream>
#include <string>
#include <fstream>
using namespace std;

void main(){
    //关于string
    //1、 string直接相加与 operator= 赋值操作符
    string a="qin ";
    string b="tang ";
    string c=a+b+"tao";
    //2、采用cout直接输出
    cout<<c<<endl;
    //3、字符串比较
    cout<<(a>b)<<endl;
    //4、size和length 得到字符串的大小
    cout<<c.length()<<endl;
    cout<<c.size()<<endl;
    //5、operator[] 取第几个运算 相当于数组
    cout<<c[0]<<endl;
    //6、insert 插入字符
    c.insert(0, "love ");
    cout<<c<<endl;
    //7、 append 增加字符
    c.append(" mm");
    cout<<c<<endl;
    c+="ww"; //运算符重载
    cout<<c<<endl;
    //8、 replace 替换字符
    c.replace(1, 2, "hh"); //1 为起始位置 2 为偏移量
    cout<<c<<endl;
    //9、截取hh 与 find
    string d=c.substr(c.find('h'), 3);
    /*
    c.find('h')  找到字符h在string中的第一个位置
    3            截取的长度
    */
    cout<<d<<endl;
    //10、operator>> 从输入流中读入字符串
    string e;
    cin>>e;  //注意:输入的字符串有空格  从第一个空格后面的舍弃
    cout<<e<<endl;
    //11、从文件流中读取
    ifstream ifs;
    ifs.open("D:\\Junit\\test1.txt");
    if(!ifs){
        cerr<<"error open............";
    }
    ifs>>e; //只会读取 文件的 第一行  并且 数据后面有空格 的后面部分舍弃
    cout<<e<<endl;
}

file_test.cpp

#include <iostream>
#include <fstream>
#include <string>
using namespace std;


/*判断文件打开 是否成功*/
void isOpenFile(){
    ifstream ifs; //输入文件流
    ifs.open("D:\\Junit\\test4.txt");
    if(!ifs){ //判断文件打开 是否成功
        cerr<<"error open.........."<<endl;  //cerr  输出错误信息
    }else{
        cout<<"ok open.........."<<endl;
    }
}

void read_line_text(){
    ifstream ifs; //输入文件流
    ifs.open("D:\\Junit\\test1.txt");
    /*
    char i[20];
    while(1){
        //ifs>>i; //读文件
        if(!ifs.getline(i, 20)) //读取 行
            break;
        cout<<i<<endl;
    }
    */
    string i;
    while(1){
        //ifs>>i; //读文件
        if(!getline(ifs, i)) //读取 行
            break;
        cout<<i<<endl;
    }
    cout<<endl;
    ifs.close();
}

void read_char_text(){
    ifstream ifs; //输入文件流
    ifs.open("D:\\Junit\\test1.txt");
    char i;
    int j;
    while(1){
        //ifs>>i; //读文件
        ifs.get(i);
        j=ifs.eof();
        if(ifs.eof()) //判断是否读到文件末尾
            break;
        cout<<i;
    }
    cout<<endl;
    ifs.close();
}

void write_char_text(){
    ofstream ofs;  //输出文件流
    ofs.open("D:\\Junit\\test1.txt");
    char i;
    while(1){
        cin>>i; //从屏幕读
        if(i=='#')    
            break;
        ofs<<i; //写文件
    }
    ofs.close();
}

C语言读写文本文件与C++对照

C语言读写二进制件与C++对照

 

原文地址:https://www.cnblogs.com/qintangtao/p/2765542.html