Chinaunix首页 | 论坛 | 博客
  • 博客访问: 512476
  • 博文数量: 158
  • 博客积分: 4015
  • 博客等级: 上校
  • 技术积分: 1711
  • 用 户 组: 普通用户
  • 注册时间: 2009-01-27 14:00
文章分类

全部博文(158)

文章存档

2010年(71)

2009年(87)

我的朋友

分类: C/C++

2010-01-29 00:04:33

我觉得这个例子相当经典:

#include <iostream>
#include <cstdio>
#include <sstream>
#include <cstring>

class InitArray {
    enum {sz = 5};
    int array[sz];
public:
    InitArray() {
        memset(array, 0, sizeof(array));
    }
    int& operator[](int index) {
        if(index < 0 || index >= sz) {
            printf("out of array!");
            exit(1);
        }
        return array[index];
    }
    friend std::ostream& operator<<(std::ostream& os,
        const InitArray& ia);
    friend std::istream& operator>>(std::istream& is,
        InitArray& ia);
};

std::ostream& operator<<(std::ostream& os,
                         const InitArray& ia) {
    for(int i = 0; i < ia.sz; i++) {
        os << ia.array[i];
        if(i != ia.sz - 1)
            os << ',';
    }
    return os;
}

std::istream& operator>>(std::istream& is,
                         InitArray& ia) {
    for(int i = 0; i < ia.sz; i++) {
        is >> ia.array[i];
    }
    return is;
}

int main() {
    std::stringstream ss("12 13 14 15 16");
    InitArray ia;
    ss >> ia;
    std::cout << ia << std::endl;
    ia[4] = 1000;
    std::cout << ia << std::endl;
}

在VC6.0当中,如果加上using namespace std;会出现大量莫名其妙的错误,挺郁闷的,是不是换个vs2005来玩玩?
阅读(1323) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~