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