Ciao ragazzi!!
sto studiando il c++, vorrei capire questo comportamento anomalo a cosa è dovuto:
dato questo codice:
#include <iostream>
#include <iomanip>
#include <string>
#include <sstream>
#include <ctype.h>
//se la stringa è un intero ritorna un intero altrimenti un carattere.
using namespace std;
int * ricevistringa(char * numerointero)
{
int static contatore = 0;
string static numeriinseriti[500];
//string static numeroint = "";
if (*numerointero == '0')
{
string static prova;
for (int x = 0; x < contatore; x++)
{
prova += numeriinseriti[x];
}
string s = prova;
stringstream ss(s);
int static i;
ss >> i;
return &i;
}
//numeroint += *numerointero;
numeriinseriti[contatore] = *numerointero;
contatore += 1;
}
string analizzastringa()
{
string str;
cout << "inserisci stringa che vuoi analizzare.. : ";
cin >> str;
int dimensionestringa = str.size();
cout << str.size() << " questa e' la dimensione della stringa" << endl; //questa è la dimensione della stringa numero di caratteri che la compongono.
cout << str[0] << " questo e' il primo carattere della stringa\n" << endl; //stampa il primo carattere della stringa.
//cout << strlen(str.c_str()) << endl;
for (int x = 0; x < dimensionestringa; x++)
if (isdigit(str[x]) == true) //se x carattere della stringa è un numero..
{
ricevistringa(&str[x]);
cout << "il carattere " << x << " e' un numero" << endl;
}
else
{
cout << "il carattere " << x << " non e' un numero" << endl;
}
}
int main()
{
analizzastringa();
char a = '0';
int * ab;
ab = ricevistringa(&a);
cout << *ab << endl;
system("PAUSE");
return 0;
}
//se il carattere è un intero ritorna la stringa poi nella funzione lo trasformi, altrimenti ritorna il carattere in un altra funzione.
il codice funziona ma ha un comportamento strano.
se lanci l'eseguibile, e digiti un po' di numeri (8 cifra MAX) ritorna il valore corretto.
se invece digiti una cifra molto grossa, tipo 10 cifre, ritorna sempre e solo il solito valore: 2147483647
ora la mia domanda è: cos'è quel valore? a cosa è dovuto?
Allegati: