C++ 31 Jan 2010 23:37:58

Snippet: Vector to Output Stream

//tinodidriksen.com/uploads/code/cpp/vector-to-ostream.cpp

#include <ostream>
#include <iostream>
#include <vector>

template<typename T>
std::ostream& operator<<(std::ostream& stm, const std::vector<T>& obj) {
    stm << "[";
    if (!obj.empty()) {
        for (size_t i = 0 ; i<obj.size()-1 ; ++i) {
            stm << obj[i] << ",";
        }
        stm << obj.back();
    }
    stm << "]";
    return stm;
}

int main() {
    std::vector<int> vec;
    vec.push_back(1);
    vec.push_back(2);
    vec.push_back(3);
    vec.push_back(2);
    vec.push_back(5);
    vec.push_back(6);
    vec.push_back(1);
    std::cout << vec << std::endl;
}

C++ 31 Jan 2010 23:35:20

Snippet: Custom Type to Output Stream

//tinodidriksen.com/uploads/code/cpp/custom-to-ostream.cpp

#include <ostream>
#include <iostream>
#include <string>

struct Custom {
    std::string m_str;
    friend std::ostream& operator<<(std::ostream& stm,
        const Custom& obj);
};

std::ostream& operator<<(std::ostream& stm, const Custom& obj) {
    stm << obj.m_str;
    return stm;
}

int main() {
    Custom cst;
    cst.m_str = "waffles";
    std::cout << cst << std::endl;
}