Estoy tratando de aprender C++ desde cero en este momento.
Soy muy versado en python, perl, javascript pero solo he encontrado C++ brevemente, en un entorno de clase en el pasado. Disculpe la ingenuidad de mi pregunta.C++ tokenize una cadena usando una expresión regular
Me gustaría dividir una cadena utilizando una expresión regular, pero no he tenido mucha suerte en encontrar un claro, definitivo, eficiente y completo ejemplo de cómo hacer esto en C++.
en Perl esta es la acción es común, y por lo tanto se puede lograr de una manera trivial,
/home/me$ cat test.txt
this is aXstringYwith, some problems
and anotherXY line with similar issues
/home/me$ cat test.txt | perl -e'
> while(<>){
> my @toks = split(/[\sXY,]+/);
> print join(" ",@toks)."\n";
> }'
this is a string with some problems
and another line with similar issues
Me gustaría saber cuál es la mejor para llevar a cabo el equivalente en C++.
EDIT:
Creo que encontré lo que estaba buscando en la biblioteca de impulso, como se menciona a continuación.
boost regex-token-iterator (¿por qué no funcionan guiones?)
supongo que no sabía qué buscar.
#include <iostream>
#include <boost/regex.hpp>
using namespace std;
int main(int argc)
{
string s;
do{
if(argc == 1)
{
cout << "Enter text to split (or \"quit\" to exit): ";
getline(cin, s);
if(s == "quit") break;
}
else
s = "This is a string of tokens";
boost::regex re("\\s+");
boost::sregex_token_iterator i(s.begin(), s.end(), re, -1);
boost::sregex_token_iterator j;
unsigned count = 0;
while(i != j)
{
cout << *i++ << endl;
count++;
}
cout << "There were " << count << " tokens found." << endl;
}while(argc == 1);
return 0;
}
debe agregar el "que se encuentra en mi propia" parte como una respuesta a su propia pregunta en lugar de tener que ser parte de su pregunta ... aunque mención que encontré y publicó la respuesta. si aparece alguien más y encuentra útil esta pregunta ... querrán ver la respuesta seleccionada de la comunidad junto con la elegida. Tu respuesta podría no ser la mejor opción para las comunidades. –