我的向量包含指向字符串vector<string*>
的指针,我想使用ostream_iterator
来输出字符串值。我尝试覆盖<<
运算符,但它不起作用:
std::ostream &operator<<(std::ostream &os, string* p) {
return os << *p;
}
。它仍然输出变量adreses。
答案 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
替换为您想要的任何输出流。