• C++输入/输出流


    2017-08-17 09:03:28

    writer:pprp

    基本的输入/输出流

    默认情况下,输入操作会丢弃前导空白,读取数据,遇到空白的时候停止读入;

    如果希望的如包括空白在内的任意字符,可以使用istream成员函数get()

    #include <iostream>
    
    using namespace std;
    
    int main()
    {
        char ch;
        while(cin.get(ch))
        {
              cout.put(ch);
              //....
        }
        return 0;
    }

    其他输入/输出操作

    istream成员函数:get()、getline()、read()、gcount()、ignore()等

    ostream成员函数:put()、write()、flush()等

    1、get()函数

    一次读入一个字符;istream& get(char &ch)

    对应的ostream成员函数put(); ostream& put(char ch)

    get()另一种形式从输入流读入一个字符返回该字符的int值; int get();

    #include <iostream>
    #include <cstdio>
    
    using namespace std;
    
    int main()
    {
        int ch;
        while((ch = cin.get()) != EOF)
        {
              cout.put(ch);
        }
        return 0;
    }

    get()第三种形式是; istream &get(char* buf, streamsize num, char delim = ' ');

    buf存放的是字符数组的首地址, streamsize num代表的从istream可以读入的最大数目,delim是终止符,读到这个就结束,delim本身不被读入,而是留在istream中作为istream下一个字符。istream成员函数ignore()可以读入istream中默认1个字符并丢弃

    istream & ignore(streamsize num = 1, int delim = EOF)

    istream的成员函数gcount()返回上一次输入操作实际从输入流读取的字符个数,streamsize gcount() const;

    #include <iostream>
    #include <cstdio>
    
    using namespace std;
    
    int main()
    {
       const int max_line = 1024;
       char line[max_line];
       while(cin.get(line,max_line))
       {
             int get_count = cin.gcount();
             cout << "characters actually read: "
                  << get_count << endl;
                  
                  //...
                  if(get_count < max_line)
                      cin.ignore();
       }
        return 0;
    }

    2、getline()  #include<string>

    使用语法与get()第三种一样,差别在于getline()会直接把delim读入并丢弃

    istream&getline (char*buf, streamsize num, char delim = ' ')

    非成员函数成员函数getline(),可以直接将文本读入string 对象中,

    istream & getline(istream & is , string & str, char  delimiter = ' ');

    3、read()

    从输入流读入size个连续字节

    read(char&addr, streamsize size)将其存放在addr为首地址的内存中。

    ostream相对应是write()

    write( char * sink, streamsize length) 输出长度为length的字符数组sink返回ostream对象

    4、操纵符

    #include <iostream>
    #include <cstdio>
    
    using namespace std;
    
    int main()
    {
        int a = 0;
        int b = 2;
        cout << boolalpha << (a > b) << endl;
        return 0;
    }
    //输出FALSE

    5、文件输入输出

    #include <iostream>
    #include <string>
    #include <fstream>
    
    using namespace std;
    
    int main()
    {
        ifstream infile("pprp.txt");
        
        string str;
        
        getline(infile,str);
        
        cout << str << endl;
    
        return 0;
    }
  • 相关阅读:
    Spring DI模式 小样例
    java中经常使用的日期格式化(全)
    循环-15. 统计素数并求和(20)
    [Unity3D]Unity3D游戏开发之自己主动寻路与Mecanim动画系统的结合
    【UVA】11732
    Mac OS使用技巧之十六:系统失去响应怎么办?
    C# 保存窗口为图片(保存纵断面图)
    Linux Resin 安装
    Etcd学习(二)集群搭建Clustering
    android中选择控件与选择界面自然过度效果的实现--一种新的交互设计
  • 原文地址:https://www.cnblogs.com/pprp/p/7380079.html
Copyright © 2020-2023  润新知