elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: (TUTORIAL) Aprende a emular Sentinel Dongle By Yapis


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  ¿Comó usar strtok con listas de la biblioteca <vector>?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ¿Comó usar strtok con listas de la biblioteca <vector>?  (Leído 2,311 veces)
oriana_anairo

Desconectado Desconectado

Mensajes: 1


Ver Perfil
¿Comó usar strtok con listas de la biblioteca <vector>?
« en: 16 Septiembre 2016, 04:37 am »

Estoy trabajando con la biblioteca vector, y quiero separa una cadena de caracteres que se encuentra en una lista, creada con push_back, pero cuando uso strtok (ListaDondeSeGuarada=strtok(ListaDeCadenasDondeSeSepara," ");)
me tira error.


En línea

crack81

Desconectado Desconectado

Mensajes: 222



Ver Perfil
Re: ¿Comó usar strtok con listas de la biblioteca <vector>?
« Respuesta #1 en: 16 Septiembre 2016, 04:54 am »

Hola si estas usando C++ puedes quizas te puedan servir alguno de estos dos enlaces

http://stackoverflow.com/questions/236129/split-a-string-in-c

http://stackoverflow.com/questions/14265581/parse-split-a-string-in-c-using-string-delimiter-standard-c

SALUDOS


En línea

Si C/C++ es el padre de los lenguajes entonces ASM es dios.
ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: ¿Comó usar strtok con listas de la biblioteca <vector>?
« Respuesta #2 en: 16 Septiembre 2016, 14:41 pm »

strtok es una función de C para trabajar con cadenas de caracteres (char*).

Lo que puedes hacer, es utilizar la función "find" de la librería algorithm:

Código
  1. #include <iostream>
  2. #include <algorithm>
  3. #include <vector>
  4.  
  5. using namespace std;
  6.  
  7.  
  8. int main(){
  9. vector<string> vec = {"a", "b", "ab", "b", "c", "ab", "d", "e"};
  10. auto tokenIterator = find(vec.begin(), vec.end(), "ab");
  11. if(tokenIterator == vec.end()){
  12. // No encontrado
  13. }else{
  14. vector<string> temp(vec.begin(), tokenIterator);
  15. for(string& str : temp)
  16. cout << str << endl;
  17. }
  18. }

http://www.cplusplus.com/reference/algorithm/find/


También puedes usar "find_first_of", en caso de que tengas varios tokens.

Código
  1. #include <iostream>
  2. #include <algorithm>
  3. #include <vector>
  4.  
  5. using namespace std;
  6.  
  7.  
  8. int main(){
  9. vector<string> vec = {"a", "b", "ab", "b", "c", "ab", "d", "e"};
  10. vector<string> tokens = {"ab", "ac"};
  11.  
  12. auto tokenIterator = find_first_of(vec.begin(), vec.end(),
  13.                                       tokens.begin(), tokens.end());
  14. if(tokenIterator == vec.end()){
  15. // No encontrado
  16. }else{
  17. vector<string> temp(vec.begin(), tokenIterator);
  18. for(string& str : temp)
  19. cout << str << endl;
  20. }
  21. }

http://www.cplusplus.com/reference/algorithm/find_first_of/



Como dato, en la STL de C++, todos los contenedores trabajan con iteradores, y las funciones para trabajar con iteradores, también suelen hacerlo.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines