Ho queste 2 funzioni. Una che mi ritorna un oggetto da una textbox con scritto numero+l+numero+l e un'altra che mi ritorna un double dalla stessa textbox se ho scritto solo un double.
T* check1(Window * w)
{
double n1, n2;
char l1, l2;
stringstream ss;
QString text1=w->text->text();
ss<<text1.toStdString();
ss>>n1;
if (!ss.good() || n1<=0)
{
throw TSyntaxError();
}
ss>>l1;
if (l1!='l')
{
throw TSyntaxError();
}
ss>>n2;
if (!ss.good() || n2<0)
{
throw TSyntaxError();
}
ss>>l2;
if (l2!='l')
{
throw TSyntaxError();
}
w->objtype->setText("T");
return new T(n1, n2);
}
double check2(Window * w)
{
double numb;
stringstream ss1;
QString textdouble=w->text->text();
ss1<<textdouble.toStdString();
ss1>>numb;
if (!ss1.good() || numb<0)
{
throw SyntaxError();
}
return numb;
}
La prima funziona perfettamente. La seconda che è pressoché identica, mi da sempre l'eccezione in quando il good dello stream non è a 0, ma ha l'eof=1 (per funzionare ho messo fail() al posto di good(), ma vorrei capire perché da sempre eof=1).