我发现以下增强代码
for (auto entry : boost::make_iterator_range(boost::filesystem::directory_iterator(dir_path), {})) {
std::cout << entry << std::endl;
}
entry可以通过dir路径输出,我想c ++具有像Java Class#toString这样的功能可以自定义输出字符串,我尝试下面的代码:
class C {
str to_string() {
return "prpr";
}
};
TEST_F(FileTest, Draft1) {
C c;
std::cout << c << std::endl;
}
我希望输出“ prpr”,但是它不起作用,如何解决?
答案 0 :(得分:0)
C ++不会自动调用任何“ to_string”或类似函数。相反,您必须为类重载operator<<
函数:
class C
{
public:
friend std::ostream& operator<<(std::ostream& os, C const& c)
{
return os << "prpr";
}
};
答案 1 :(得分:0)
如果您要将类传递给std::cout
,则需要在类中为<<
重载std::ostream
运算符。
class C {
friend std::ostream& operator<<(std::ostream& os, const C& c);
};
std::ostream& operator<<(std::ostream& os, const C& c){
os<<"prpr";
return os;
}