to_string vs cast to string,运算符<&书信电报;

to_string vs cast to string,运算符<&书信电报;,string,c++11,casting,conventions,String,C++11,Casting,Conventions,我想知道对于我自己的类,实现转换为字符串的最佳方法是什么。我已经进行了广泛的搜索(并查阅了一些书籍),但令人惊讶的是,我在任何地方都没有找到任何推荐书。在我看来,这些选择是: 转换为字符串的内部类定义: 运算符std::string()const 的类外重载 std::字符串到字符串(常量对象&) 与此相关:是否最好声明流式操作符的重载?我认为这取决于您试图生成的字符串的类型。如果是为了日志记录和调试,我可能会使用独立(非成员)函数重载,但是否“更好”有待讨论。至于应该在哪里声明输出(或输入)运

我想知道对于我自己的类,实现转换为字符串的最佳方法是什么。我已经进行了广泛的搜索(并查阅了一些书籍),但令人惊讶的是,我在任何地方都没有找到任何推荐书。在我看来,这些选择是:

转换为字符串的内部类定义:
运算符std::string()const

的类外重载
std::字符串到字符串(常量对象&)


与此相关:是否最好声明流式操作符的重载?我认为这取决于您试图生成的字符串的类型。如果是为了日志记录和调试,我可能会使用独立(非成员)函数重载
,但是否“更好”有待讨论。至于应该在哪里声明输出(或输入)运算符,这在很大程度上取决于它们是否需要与类交朋友。如果他们需要成为朋友,那么你必须在课堂上宣布他们。还要注意的是,如果你在一个类中声明一个函数而没有
friend
说明符,那么它就被声明为一个成员函数,如果你想将对象传递给一个流,那么这很可能不是你想要的输出操作符。我在我的原始帖子中没有写的是我倾向于使用字符串,因为这符合标准数字类型的要求。因此,如果字符串转换/流式处理不需要
friend
ship,最好在类外声明它们?
@DanielGr对不起,我的意思是使用
std::ostringstream
进行这种转换,这是非常惯用的。