用于向量中的字符串指针的输出运算符

时间:2014-02-18 09:49:10

标签: c++ override output

我的向量包含指向字符串vector<string*>的指针,我想使用ostream_iterator来输出字符串值。我尝试覆盖<<运算符,但它不起作用: std::ostream &operator<<(std::ostream &os, string* p) { return os << *p; }。它仍然输出变量adreses。

1 个答案:

答案 0 :(得分:0)

嗯,目前还不太清楚你的实际问题是什么,但是你对<< works for me when tested.的专长也就是说,这可以按预期工作:

std::ostream &operator<<(std::ostream &os, std::string* p){
    return os << *p;
}


int main(){

    std::string str("Hello World\n");
    std::vector<std::string*> vec{&str};


    for (std::size_t i = 0; i < vec.size(); i++){
        std::cout << vec[i];
    }

输出为Hello World

然而,为了更有趣,你可以做一个好的,惯用的oneliner:

std::transform(begin(vec), end(vec), std::ostream_iterator<std::string>(std::cout), [](const std::string* foo){return *foo;});

您可以将示例中的std::cout替换为您想要的任何输出流。