Vector to comma separated string in C++

In this tutorial, we will learn how to convert a vector to a comma-separated string in C++.

Example:

Vector – {‘P’,’Q’,’R’,’S’}

String – P, Q, R, S

There are mainly 3 methods that are widely used to convert a vector to a string. We will discuss all three methods with the help of code.

1. Using String Stream and iterator

In this method, we will create a stringstream, traverse the vector with the help of the iterator. The elements can be added to the stringstream by dereferencing the iterator.

Syntax

stringstream_name << *iterator << delimiter;

Example:

#include <bits/stdc++.h>
#include <sstream>
using namespace std;
  
int main()
{
    vector<char> v{'P','Q','R','S'};
    
    stringstream s;        // creating stringstream object
  
    for (auto it = v.begin(); it != v.end(); it++) {
        if(it!=v.end()-1)
        s<< *it << ",";
        else
        s<<*it;
    }
    cout << s.str() << endl;
  
    return 0;
}

Output:

P,Q,R,S

2. Using String Stream and index

In this method also we will  create the stringstream but traverse the vector through the index and add the elements to stringstream.

Syntax:

stringstream_name << vector_element << delimiter;

Example:

#include <bits/stdc++.h>
#include <sstream>
using namespace std;
  
int main()
{
    
    vector<char> v = { 'P','Q','R','S' };
    stringstream s;
  
    for (int i = 0; i < v.size(); i++) { 
        if(i!=v.size()-1)
        s<< v[i] << ",";
    else
    s<<v[i];
    }
    cout << s.str() << endl;
  
    return 0;
}
Output:

P,Q,R,S

3. Using copy()

In this method, we will create a ostringstream, and using the copy() we will copy the vector through ostream_iterator, vector iterator range, and vector.back().

Syntax:

copy(begin iterator, end iterator-1, ostream iterator <Type> (ostringstream_name, delimiter);
ostringstream_name << vector.back();

Example:

#include <bits/stdc++.h>
using namespace std;
  
int main()
{
    vector<char> v{'P','Q','R','S'};
  
    ostringstream s;
  
    if (!v.empty()) {
        // using copy() method to copy the elements of the vector to the ostringstream object
        copy(v.begin(), v.end() - 1,ostream_iterator<char>(s, ","));
        s<< v.back();
    }
  
    cout << s.str() << endl;
  
    return 0;
}
Output:

P,Q,R,S

We can use these methods with any data type of the vector.

Leave a Reply

Your email address will not be published. Required fields are marked *