0

矢量大小: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

提前致谢!

4

4 回答 4

3

让我们假设向量被命名为 v。

if(!v.empty()) {
  cout << v[0];
  for(int i = 1; i<v.size(); ++i) {
    cout << " AND " << v[i];
  }
}
于 2013-08-12T17:15:10.437 回答
1

我会用我的infix_ostream_iterator

std::copy(vec.begin(), vec.end(), 
         infix_ostream_iterator<std::string>(std::cout, " AND "));

infix_ostream_iterator代码在CodeReview.SE

于 2013-08-12T17:19:39.630 回答
1

只是添加我喜欢的方式:

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)) 中一样工作。

于 2013-08-12T20:39:58.100 回答
0
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];
于 2013-08-12T17:17:06.930 回答