convertir cadena a int usar sstream
Frecuentes
Visto 10,731 veces
3
Queremos convertir cadenas a int usando corriente.
Pero no sabemos si nuestra cadena tiene un número entero o no, por ejemplo, puede ser el "hola 200" y queremos 200 en eso, o puede ser "Hola" y ahi estaba sin solución!
Tengo este código cuando solo tenemos un número entero en la cadena:
inline int string_to_int(string s)
{
stringstream ss(s);
int x;
ss >> x;
return x;
}
Ahora, si s = "¡hola 200!" o s = "hola", ¿cómo podemos hacer eso?
3 Respuestas
4
Una posibilidad simple que ignora las malas entradas hasta el primer entero en una cadena:
bool string_to_int(string str, int &x)
{
istringstream ss(str);
while (!ss.eof())
{
if (ss >> x)
return true;
ss.clear();
ss.ignore();
}
return false; // There is no integer!
}
Respondido el 22 de Septiembre de 13 a las 07:09
1
Escriba un analizador basado en una máquina de estados finitos y corrija cualquier entrada como desee:
int extract_int_from_string(const char* s) {
const char* h = s;
while( *h ) {
if( isdigit(*h) )
return atoi(h);
h+=1;
}
return 0;
} ... int i = extract_int_from_string("hola 100");
Respondido el 21 de Septiembre de 13 a las 12:09
0
//You can use the following function to get the integer part in your string...
string findDigits(string s){
string digits="";
int len=s.length();
for(int i=0;i<len;i++){
if(s.at(i)>='0' && s.at(i)<='9')
digits+=s[i];}
return digits;}
// and call the above function inside this function below...
int string_to_int(string s){
string digits=findDigits(s);
stringstream ss(digits);
int x;
ss >> x;
return x;}
Respondido 14 Feb 18, 07:02
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas c++ string int sstream or haz tu propia pregunta.
¿Y no necesitamos indexar un número entero en una cadena? - Amirhossein Mahdinejad
No estoy seguro de haber entendido bien tu pregunta. ¿Qué quieres decir? - AnatolyS