通常,当我必须显示一个单独的字符串列表时,我做了类似的事情:
using namespace std;
vector<string> mylist; // Lets consider it has 3 elements : apple, banana and orange.
for (vector<string>::iterator item = mylist.begin(); item != mylist.end(); ++item)
{
if (item == mylist.begin())
{
cout << *item;
} else
{
cout << ", " << *item;
}
}
Run Code Online (Sandbox Code Playgroud)
哪个输出:
apple, banana, orange
Run Code Online (Sandbox Code Playgroud)
我最近发现std::ostream_iterator如果发现它真的很好用.
但是使用以下代码:
copy(mylist.begin(), mylist.end(), ostream_iterator<string>(cout, ", "));
Run Code Online (Sandbox Code Playgroud)
如果得到:
apple, banana, orange,
Run Code Online (Sandbox Code Playgroud)
几乎完美,除了额外的,.是否有一种优雅的方式来处理特殊的"第一个(或最后一个)元素"并且具有与第一个代码相同的输出,而没有它的"复杂性"?
虽然没有std:
cout << boost::algorithm::join(mylist, ", ");
Run Code Online (Sandbox Code Playgroud)
编辑:没问题:
cout << boost::algorithm::join(mylist |
boost::adaptors::transformed(boost::lexical_cast<string,int>), ", "
);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1112 次 |
| 最近记录: |