Foros del Web » Programación para mayores de 30 ;) » C/C++ »

problema al parsear numero de un string con istringstream

Estas en el tema de problema al parsear numero de un string con istringstream en el foro de C/C++ en Foros del Web. Buenas! Tengo una cadena string con varios valores numericos dispuestos de esta manera: Código: string line = "1/2/3 4/5/6 7/8/9" Mi problema es que si ...
  #1 (permalink)  
Antiguo 05/09/2012, 08:17
 
Fecha de Ingreso: septiembre-2012
Mensajes: 38
Antigüedad: 12 años, 2 meses
Puntos: 0
problema al parsear numero de un string con istringstream

Buenas!
Tengo una cadena string con varios valores numericos dispuestos de esta manera:
Código:
string line = "1/2/3 4/5/6 7/8/9"
Mi problema es que si uso istringstream para obtener esos valores, me da otros números. Una solución que encontré fue recorrer la linea y cambiar los caracteres '/' por ' ', para así obtener los números. Me gustaría saber si hay una manera mas sencilla para conseguir lo que intento.

Este seria mi código actual:

Código:
for(register int i = 2; i < line.length(); i++)
            {
                if(line[i] == '/')
                {
                    line[i] = ' ';
                }
            }

            istringstream s(line.substr(2));
            int indice;
            while(!s.eof())
            {
                s >> indice;
            }
Un saludo!
  #2 (permalink)  
Antiguo 07/09/2012, 02:32
 
Fecha de Ingreso: julio-2012
Mensajes: 133
Antigüedad: 12 años, 4 meses
Puntos: 22
Respuesta: problema al parsear numero de un string con istringstream

Hola ShotoReaper.

Un ejemplo con una opción diferente:
Código C++:
Ver original
  1. #include <iostream>
  2. #include <vector>
  3.  
  4. using namespace std;
  5.  
  6. vector <int> ParseStringToInt(string);
  7. void ShowVector(vector <int>);
  8.  
  9. int main(int argc, char* argv[])
  10. {
  11.   vector <int> vec;
  12.   string Cadena = "1/2/3 4/5/6 7/8/9 16a32&64 128&512*1024...";
  13.  
  14.   vec = ParseStringToInt(Cadena);
  15.   ShowVector(vec);
  16.  
  17.   cin.get();
  18.   return 0;
  19. }
  20.  
  21. vector <int> ParseStringToInt(string str) {
  22.   vector <int> v;
  23.   string s;
  24.   int i = 0;
  25.   while (i < str.length()) {
  26.     s.clear();
  27.     while (isdigit(str[i]))
  28.       s += str[i++];
  29.     if (s.length()>0)
  30.       v.push_back(atoi(s.c_str()));
  31.     i++;
  32.   }
  33.   return v;
  34. }
  35.  
  36. void ShowVector(vector <int>v) {
  37.   for (int i=0; i < v.size();i++)
  38.     cout << v.at(i) << endl;
  39. }
Cualquier caracter que no sea un dígito decimal es considerado separador.

Saludos.
  #3 (permalink)  
Antiguo 09/09/2012, 07:40
 
Fecha de Ingreso: septiembre-2012
Mensajes: 38
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: problema al parsear numero de un string con istringstream

Gracias por la respuesta! Funciona perfectamente!

Etiquetas: int, numero, parsear, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:07.