2

I need to store elements of a c array of strings in a vector.

Basically I need to copy all the elements of a c array into a vector<std::string>.

#include<vector>
#include<conio.h>
#include<iostream>

using namespace std;

int main()
{
    char *a[3]={"field1","field2","field3"};

    //Some code here!!!!

    vector<std::string>::const_iterator it=fields.begin();
    for(;it!=fields.end();it++)
    {
        cout<<*it++<<endl;
    }   
    getch();
}

Could anybody help me out to store c array elements into a vector?

EDIT

this below code is dumping the core!!Pls help

int main()
{
    char *a[3]={"field1","field2","field3"};
    std::vector<std::string> fields(a, a + 3);

    vector<std::string>::const_iterator it=fields.begin();
    for(;it!=fields.end();it++)
    {
        cout<<*it++<<endl;
    }   
    getch();
}
1
  • 2
    You have it++ in two places. Remove ++ from one of them. Commented Jun 10, 2011 at 14:23

4 Answers 4

13
std::vector<std::string> fields(a, a + 3);
Sign up to request clarification or add additional context in comments.

2 Comments

how can a c array which holds the pointers to the strings can be directly converted to std::string?
See the third constructor listed here: cplusplus.com/reference/stl/vector/vector and also the vector fifth in the example beneath the article.
6
std::vector<std::string> blah(a, a + LENGTH_OF_ARRAY)

Comments

2
#include<vector>
// #include<conio.h>
#include<iostream>
#include <iterator>
#include <algorithm>

using namespace std;

int main()
{
  const char *a[3]={"field1","field2","field3"};

  // If you want to create a brand new vector
  vector<string> v(a, a+3);
  std::copy(v.begin(), v.end(), ostream_iterator<string>(cout, "\n"));

  vector<string> v2;
  // Or, if you already have an existing vector
  vector<string>(a,a+3).swap(v2);
  std::copy(v2.begin(), v2.end(), ostream_iterator<string>(cout, "\n"));

  vector<string> v3;
  v3.push_back("field0");
  // Or, if you want to add strings to an existing vector
  v3.insert(v3.end(), a, a+3);
  std::copy(v3.begin(), v3.end(), ostream_iterator<string>(cout, "\n"));

}

Comments

0

You use the insert method to add content to a vector. Take a look at the sample fragment from here: http://www.cplusplus.com/reference/stl/vector/insert/

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.