矢量大小:2
矢量资料:卡罗尔·玛丽
if(vector.size() >=2)
{
cout<<vector.size();
for(int i=1;i<vector.size()-2;i++)
{
cout<<" AND ";
}
}
输出显示:Carol AND Mary AND
我如何将其更改为卡罗尔和玛丽?
当我的矢量大小为 3 时,
我如何将其更改为 Carol AND Mary AND Peter
提前致谢!
矢量大小:2
矢量资料:卡罗尔·玛丽
if(vector.size() >=2)
{
cout<<vector.size();
for(int i=1;i<vector.size()-2;i++)
{
cout<<" AND ";
}
}
输出显示:Carol AND Mary AND
我如何将其更改为卡罗尔和玛丽?
当我的矢量大小为 3 时,
我如何将其更改为 Carol AND Mary AND Peter
提前致谢!
让我们假设向量被命名为 v。
if(!v.empty()) {
cout << v[0];
for(int i = 1; i<v.size(); ++i) {
cout << " AND " << v[i];
}
}
我会用我的infix_ostream_iterator
:
std::copy(vec.begin(), vec.end(),
infix_ostream_iterator<std::string>(std::cout, " AND "));
infix_ostream_iterator
代码在CodeReview.SE上。
只是添加我喜欢的方式:
const char *sep = "";
for (size_t i=0; i<vec.size(); ++i, sep=" AND ")
cout << sep << vec[i];
cout << endl;
或者,甚至更短:
cout << join(vec, " AND ") << endl;
也就是说,使用 boost::algorithm::join(),就像在 Python ( " AND ".join(vec)
) 中一样工作。
std::vector<std::string> vec {"Carol","Marry","Peter"};
int i=1;
std::cout<<vec[0];
for(;i<vec.size();++i)
std::cout<<" AND "<<vec[i];