Difference between revisions of "CPP/Strings/Split"

From ProgrammingExamples
< CPP
Jump to: navigation, search
(Created page with '==Split.cpp== <source lang="cpp"> #include <iostream> #include <sstream> #include <string> #include <algorithm> #include <iterator> #include <vector> int main(int argc, char *ar…')
 
 
Line 7: Line 7:
 
#include <iterator>
 
#include <iterator>
 
#include <vector>
 
#include <vector>
 
+
 +
void SplitOnSpaces();
 +
void SplitOnDelim();
 +
std::vector<std::string> split(const std::string &s, char delim) ;
 +
 
int main(int argc, char *argv[])
 
int main(int argc, char *argv[])
 
{
 
{
 +
  SplitOnSpaces();
 +
  SplitOnDelim();
 +
 +
  return 0;
 +
}
 +
 +
std::vector<std::string> split(const std::string &s, char delim)
 +
{
 +
  std::vector<std::string> elems;
 +
    std::stringstream ss(s);
 +
    std::string item;
 +
    while(std::getline(ss, item, delim))
 +
    {
 +
        elems.push_back(item);
 +
    }
 +
    return elems;
 +
}
 +
 +
 +
void SplitOnDelim()
 +
{
 +
  std::cout << "SplitOnDelim" << std::endl << "--------" << std::endl;
 +
  std::string sentence = "hello,this,is,a,test";
 +
 +
  std::vector<std::string> words = split(sentence, ',');
 +
 +
  for(unsigned int i = 0; i < words.size(); i++)
 +
  {
 +
    std::cout << words[i] << std::endl;
 +
  }
 +
}
 +
 +
void SplitOnSpaces()
 +
{
 +
  std::cout << "SplitOnSpaces" << std::endl << "--------" << std::endl;
 
   std::string sentence = "hello world test 1 2 3";
 
   std::string sentence = "hello world test 1 2 3";
 
+
 
   std::istringstream iss(sentence);
 
   std::istringstream iss(sentence);
 
   std::vector<std::string> words;
 
   std::vector<std::string> words;
Line 17: Line 56:
 
             std::istream_iterator<std::string>(),
 
             std::istream_iterator<std::string>(),
 
             std::back_inserter<std::vector<std::string> >(words));
 
             std::back_inserter<std::vector<std::string> >(words));
 
+
 
   for(unsigned int i = 0; i < words.size(); i++)
 
   for(unsigned int i = 0; i < words.size(); i++)
 
   {
 
   {
 
     std::cout << words[i] << std::endl;
 
     std::cout << words[i] << std::endl;
 
   }
 
   }
 
 
 
 
  return 0;
 
 
}
 
}
 
 
</source>
 
</source>

Latest revision as of 14:55, 27 July 2010

Split.cpp

#include <iostream>
#include <sstream>
#include <string>
#include <algorithm>
#include <iterator>
#include <vector>
 
void SplitOnSpaces();
void SplitOnDelim();
std::vector<std::string> split(const std::string &s, char delim) ;
 
int main(int argc, char *argv[])
{
  SplitOnSpaces();
  SplitOnDelim();
 
  return 0;
}
 
std::vector<std::string> split(const std::string &s, char delim) 
{
  std::vector<std::string> elems;
    std::stringstream ss(s);
    std::string item;
    while(std::getline(ss, item, delim))
    {
        elems.push_back(item);
    }
    return elems;
}
 
 
void SplitOnDelim()
{
  std::cout << "SplitOnDelim" << std::endl << "--------" << std::endl;
  std::string sentence = "hello,this,is,a,test";
 
  std::vector<std::string> words = split(sentence, ',');
 
  for(unsigned int i = 0; i < words.size(); i++)
  {
    std::cout << words[i] << std::endl;
  }
}
 
void SplitOnSpaces()
{
  std::cout << "SplitOnSpaces" << std::endl << "--------" << std::endl;
  std::string sentence = "hello world test 1 2 3";
 
  std::istringstream iss(sentence);
  std::vector<std::string> words;
  std::copy(std::istream_iterator<std::string>(iss),
             std::istream_iterator<std::string>(),
             std::back_inserter<std::vector<std::string> >(words));
 
  for(unsigned int i = 0; i < words.size(); i++)
  {
    std::cout << words[i] << std::endl;
  }
}