为什么std :: to_string不支持容器类作为输入?

问题描述 投票:1回答:1

所以std :: to_string适用于各种原始类型。但是,当尝试打印容器的元素(如矢量)时,我必须逐个元素地迭代矢量并单独打印每个元素。现在被赋予了类似于向量的东西,这可以相当于单个语句或循环,如下所示:

for_each(v.begin(), v.end(), [](int x) {cout << x <<", "; });

但是对于其他容器类,格式化数据类型可能会非常麻烦。

相比之下,Java或Python等语言具有在单个语句中打印大多数容器的功能。为什么STL不接受这些作为std :: to_string中的参数或实现to_string作为容器类的成员函数?

c++ stl
1个回答
2
投票

Vector不知道如何将自定义类转换为字符串,除非自定义类提供字符串转换。现在,自定义类不需要提供字符串转换,因为它可能对该类意义较小。

从这个意义上讲,容器非常通用。就像你指出的那样,它很容易实现。非常典型的方法是重载<<运算符如下:

ostream& operator<<(ostream& cout, const vector<int>& sorted)
{
  cout << "Array => ";
  for( auto i : sorted ) {
    cout << i << ", ";
  }
  cout << endl;
  return cout;
}

或者使用stringstream类或使用for_each ...

© www.soinside.com 2019 - 2024. All rights reserved.