簡體   English   中英

為什么std :: to_string不支持容器類作為輸入?

[英]Why doesn't std::to_string support container classes as input?

因此std :: to_string適用於各種原始類型。 但是,當嘗試像矢量一樣打印容器的元素時,我必須逐個元素遍歷vector並分別打印。 現在被授予,使用諸如矢量之類的東西,就等於一個語句或循環,如下所示:

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

但是對於其他容器類,格式化數據類型可能會很麻煩。

相反,諸如Java或Python之類的語言具有可在單個語句中打印大多數容器的函數。 為什么STL不接受這些作為std :: to_string中的參數,或者不實現to_string作為容器類的成員函數?

Vector不知道如何將自定義類轉換為字符串,除非自定義類提供字符串轉換。 現在,不需要自定義類來提供字符串轉換,因為這對於該類來說可能意味着更少的意義。

從這個意義上說,容器是非常通用的。 就像您指出的那樣,它非常容易實現。 非常典型的方法是如下重載<<運算符:

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

或使用stringstream類或使用for_each ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM