C++ IO基础

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

所有的流有两个基类:iosstreambuf
streambuf:提供对缓冲区的基本操作,设置缓冲区等
ios:记录流的状态,支持对streambuf的输入/输出的格式化/非格式化操作。

istreamostream的操作:

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

这里写图片描述

posted on 2016-01-22 11:10  杨博东的博客  阅读(26)  评论(0编辑  收藏  举报

导航