【发布时间】:2015-01-23 14:52:02
【问题描述】:
我认为to_string 只是模板化并在后台使用stringstream。
不是这样吗?
我希望能够做到这一点:
class foo{};
ostream& operator<<(ostream& os, const foo& /*bar*/){
os << "foo";
return os;
}
int main() {
foo bar;
string tsTest = to_string(bar);
return 0;
}
但显然这不起作用,因为 to_string 没有模板化。
【问题讨论】:
-
在
foo的命名空间中定义一个to_string重载,然后通过using导入该命名空间怎么样?那段代码 sn-p 中的 ostream 需要什么? -
std::stringstream不是最有效的转换方式,所以也许这就是它没有模板化的原因,所以每个重载都使用更有效的函数? -
@peppe 在代码片段中需要
operator<<我认为允许to_string使用stringstream插入“foo”。问题出在哪里,为什么to_string不使用stringstream? -
从documentation 可以明显看出
std::to_string是一组沼泽标准重载,而不是函数模板。 -
对于初学者来说,
std::to_string是根据sprintf定义的,而不是std::ostringstream。很有可能,其意图是可以通过这种方式实现。
标签: c++ c++11 tostring stringstream stream-operators