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 = '\n');

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 = '\n')

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

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

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;
}

 

posted @ 2017-08-17 10:00  pprp  阅读(246)  评论(0编辑  收藏  举报