programas ejemplos completo comandos basico c++

ejemplos - División de C++ std:: string utilizando tokens, por ejemplo, ";"



split string c++ (3)

Encuentro que std::getline() es a menudo el más simple. El parámetro del delimitador opcional significa que no es solo para leer "líneas":

#include <sstream> #include <iostream> #include <vector> using namespace std; int main() { vector<string> strings; istringstream f("denmark;sweden;india;us"); string s; while (getline(f, s, '';'')) { cout << s << endl; strings.push_back(s); } }

¿La mejor manera de dividir una cadena en C ++? Se puede suponer que la cadena está compuesta de palabras separadas por el delimitador ; .

Desde el punto de vista de nuestras líneas guía, las funciones de cadena C no están permitidas y tampoco se permite el uso de Boost debido a problemas de seguridad. No se permite el código abierto.

La mejor solución que tengo ahora es:

string str("denmark;sweden;india;us");

Por encima de str debe almacenar en vectores como cadenas. ¿Cómo podemos lograr esto?

Gracias por las entradas.


Hay varias bibliotecas disponibles que resuelven este problema, pero la más simple es probablemente usar Boost Tokenizer:

#include <iostream> #include <string> #include <boost/tokenizer.hpp> #include <boost/foreach.hpp> typedef boost::tokenizer<boost::char_separator<char> > tokenizer; std::string str("denmark;sweden;india;us"); boost::char_separator<char> sep(";"); tokenizer tokens(str, sep); BOOST_FOREACH(std::string const& token, tokens) { std::cout << "<" << *tok_iter << "> " << "/n"; }


Puede usar una secuencia de cadenas y leer los elementos en el vector.

Here hay muchos ejemplos diferentes ...

Una copia de uno de los ejemplos:

std::vector<std::string> split(const std::string& s, char seperator) { std::vector<std::string> output; std::string::size_type prev_pos = 0, pos = 0; while((pos = s.find(seperator, pos)) != std::string::npos) { std::string substring( s.substr(prev_pos, pos-prev_pos) ); output.push_back(substring); prev_pos = ++pos; } output.push_back(s.substr(prev_pos, pos-prev_pos)); // Last word return output; }