Я читаю данные из файла, символ за символом, в конце чтения, я должен иметь возможность распечатать, если значение было действительным или целым числом.
Я прочитал данные с помощью get () и сохранил их в 2 разных очередях, если первая часть будет integerQueue, если ‘.’ считывается, затем переключите оставшиеся данные в realQueue. Затем распечатайте соответственно.
Возникли проблемы при печати. Просто продолжайте маркировать все в Integer: тогда правильное значение ….
else if(isdigit(temp) || temp == '.')
{
integerQueue.push(temp);
char temp2 = readFile.get();
while(isdigit(temp2))
{
integerQueue.push(temp2);
temp2 = readFile.get();
}
if( temp == '.')
{
realQueue.push(temp);
temp2 = readFile.get();
while(isdigit(temp2))
{
realQueue.push(temp2);
temp2 = readFile.get();
}
}
if(realQueue.empty())
{
writeFile <<"Integer: ";
while(!integerQueue.empty())
{
writeFile <<integerQueue.front();
integerQueue.pop();
}
}
else
{
writeFile<<"Real: ";
while(!integerQueue.empty())
{
writeFile <<integerQueue.front();
integerQueue.pop();
}
while(!realQueue.empty())
{
writeFile <<realQueue.front();
realQueue.pop();
}
}
10-я строка: if( temp == '.')
— вы читаете первый символ, который входит в эту часть кода вместо последнего, который был прочитан (и тот, который в конечном итоге может привести к разрыву цикла while).
Вы должны проверить, равен ли temp2 ‘.’, А не temp.
Других решений пока нет …