0

Vector size: 2

Vector data: Carol Mary

if(vector.size() >=2)
{
    cout<<vector.size();

    for(int i=1;i<vector.size()-2;i++)
    {
        cout<<" AND ";
    }
}

Output display: Carol AND Mary AND

How do i change it to Carol AND Mary?

and when my vector size is 3,

How do i change it to Carol AND Mary AND Peter

Thanks in advance!

user1745860
  • 207
  • 1
  • 5
  • 11

4 Answers4

3

lets assume the vector is named v.

if(!v.empty()) {
  cout << v[0];
  for(int i = 1; i<v.size(); ++i) {
    cout << " AND " << v[i];
  }
}
pippin1289
  • 4,861
  • 2
  • 22
  • 37
1

I'd use my infix_ostream_iterator:

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

The infix_ostream_iterator code is on CodeReview.SE.

Community
  • 1
  • 1
Jerry Coffin
  • 476,176
  • 80
  • 629
  • 1,111
1

Just to add my preferred way:

const char *sep = "";
for (size_t i=0; i<vec.size(); ++i, sep=" AND ")
    cout << sep << vec[i];
cout << endl;

Or, even shorter:

cout << join(vec, " AND ") << endl;

That is, using boost::algorithm::join(), works like in Python (" AND ".join(vec)).

DanielKO
  • 4,422
  • 19
  • 29
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];
P0W
  • 46,614
  • 9
  • 72
  • 119