如何为std :: cout自定义Class to_string

时间:2018-07-30 09:30:26

标签: c++

我发现以下增强代码

        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”,但是它不起作用,如何解决?

2 个答案:

答案 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;
}