通常情况下,当我不得不显示分隔字符串列表,我在做这样的事情:如何很好地输出分隔字符串的列表?
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;
}
}
,输出:
apple, banana, orange
我最近发现std::ostream_iterator
其中,如果发现真的很好用。
但是:
copy(mylist.begin(), mylist.end(), ostream_iterator<string>(cout, ", "));
如果得到:
apple, banana, orange,
近乎完美,除了额外的,
。是否有一种优雅的方式来处理特殊的“第一个(或最后一个)元素案例”,并且具有与第一个代码相同的输出,而没有其“复杂性”?
很遗憾,答案是否定的。 – 2010-09-27 13:27:41
[用逗号打印列表C++]可能的重复(http://stackoverflow.com/questions/3496982/printing-lists-with-commas-c)如果你会(我毕竟是),打电话给我偏见,但我认为我对这个问题的回答特别干净...... :-) – 2010-09-27 13:28:20
我的意思是,你可以用'transform'或'accumulate'做些时髦的事情,但那些会涉及到使用函子。你不必编写一个循环,但你必须编写代码。 – 2010-09-27 13:28:36