您的位置:首页 > 编程语言 > C语言/C++

C++ IO基础

2016-01-22 11:09 288 查看
一:c++I/O处理,按照数据输入输出的过程,形象的将其看做流。数据在流中进行传播。



所有的流有两个基类:
ios
streambuf


streambuf
:提供对缓冲区的基本操作,设置缓冲区等

ios
:记录流的状态,支持对
streambuf
的输入/输出的格式化/非格式化操作。

istream
ostream
的操作:

istream

1:>> : 返回的是引用,所以可以连续使用。

int a,b,c;
cin >> a >> b >> c;


2:cin.get() : 读取单个字符,返回ASCII码 。

char ch;
ch = cin.get();


3:cin.get(char &):读取单个字符,返回一个istream对象的引用。

char ch1,ch2;
cin.get(ch1).get(ch2);
cout << ch1 << " " << ch2 << endl;


4:cin.getline():读取一行,直到遇到
\0
,与
>>
的不同点在于
>>
遇到空格,制表符等就会结束。下面的两个getline是不一样的。

char string[256];
std::cin.getline(string,sizeof(string));

std::string name;
std::getline(std::cin,name);


5:cin.read(buf,len):len是读取的长度,包括空白字符也会被读

char buf[10];
std::cin.read(buf,5); //只会读取五个字符


ostream

1:<<:返回一个ostream对象的引用,所以可以连续使用。

int n1 = 100;
int n2 = 200;
cout << n1 << " " << n2 << endl;


2:cout.put() :输出单个字符,返回引用。

cout.put('A');
cout.put('B').put('C');

cout << 'A' << 'B' << 'C';


3:cout.write(buf,len):返回一个ostream的引用

char buf[] = "abcde";
cout.write(buf,5);


istringstream

来自于istream,提供读写string的功能。它能以空格将一个字符串分开。

#include<iostream>
#include<sstream>

using std::cout;
using std::cin;
using std::endl;

int main(int argc,char *argv[])
{
std::string line;
std::string word;

while(std::getline(cin,line)) {
std::istringstream iss(line);

while(iss >> word) {
cout << word << "#";
}
cout << endl;
}
return 0;
}




ostringstream

和istringstream相似,下面是将double转换成string类型:

#include<iostream>
#include<sstream>

using std::cout;
using std::cin;
using std::endl;

std::string doubletostr(double val)
{
std::ostringstream oss;
oss << val;
return oss.str();
}

int main(int argc,char *argv[])
{
double val = 55.55;

std::string str = doubletostr(val);
cout << str << endl;

return 0;
}


二:在
<iostream>
中定义了和cin以及cout作用类似的运算符有:

endl:输出时插入换行符并且刷新流。

endls:输出时在字符插入NULL作为尾符。

flush:刷新缓冲区

ws:输出时略去空白符

dec:令io数据按十进制格式输出

hex:令io数据按十六进制格式

oct:令io数据按照八进制格式

#include<iostream>

using std::cout;
using std::cin;
using std::endl;

int main(int argc,char *argv[])
{
int a;
cin >> a;
cout << std::hex << a << endl;
return 0;
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: