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 ;
}
其他输入/输出操作
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 ;
}
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 = ;
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 ;
}
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 = ;
int b = ;
cout << boolalpha << (a > b) << endl;
return ;
}
//输出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 ;
}