Difference between revisions of "CPP/Strings/Split"
From ProgrammingExamples
< CPP
Daviddoria (Talk | contribs) (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…') |
Daviddoria (Talk | contribs) |
||
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; | ||
} | } | ||
− | |||
− | |||
− | |||
} | } | ||
− | |||
</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; } }