-2

I have a string variable

string = " this is my string"

I want to store every word separated by a whitespace into an array

  • array[0]="this";
  • array[1]="is";
  • array[2]="my";
  • array[3]="string";
rakk92
  • 57
  • 1
  • 9

3 Answers3

0

First you have to include "sstream" class like:

#include <sstream>

Then use below code:

    string str= "this is my string"
    int len = str.length();
    string arr[len];
    int i = 0;
    stringstream ssin(str);
    while (ssin.good() && i < len){
        ssin >> arr[i];
        ++i;
    }
    for(i = 0; i < len; i++){
        cout << arr[i] << endl;
    }
Naqash Malik
  • 1,707
  • 1
  • 12
  • 14
0

You could use std::copy with std::istringstream and std::istream_iterator and std::back_inserter:

vector<string> v;
istringstream ss(" this is my string");
copy(istream_iterator<string>(ss), istream_iterator<string>(), back_inserter(v));

LIVE

songyuanyao
  • 169,198
  • 16
  • 310
  • 405
0

For this case, you can use string delimiter concept

 strtok(const char * str, int delimiter);

for your case, delimiter is "white space".

program:

 #include <stdio.h>
 #include <string.h>

 int main ()
 {
     char str[] ="This a sample string";
     char * output_after_delimiter_applied;
     char *out_arr[4];
     int i=0;

     printf("The original string is %s\n", str);

     output_after_delimiter_applied = strtok (str," ");

     while (output_after_delimiter_applied != NULL)
     {
         out_arr[i] = output_after_delimiter_applied;
         output_after_delimiter_applied = strtok (NULL, " ");    
                   // NULL parameter is for continuing the search
                  //  delimiter is "white space".
         i++;
     }

     for(i=0; i < 4 ; i++)
         printf("%s\n", out_arr[i]); 

     return 0;
  }

we can add any no. of delimiters with in double quotes. it is like string (delimiter) search.

Eswaran Pandi
  • 602
  • 6
  • 10