以正确的顺序输出队列 [英] outputting queues in correct order

查看:187
本文介绍了以正确的顺序输出队列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

输出实数或整数
我正在从一个文件中逐个字符读取数字。它将读取一个整数,并将其推入integerQueue,直到它达到一个'。',然后它将切换到一个realqueue。

Working on outputting either a real number or integer number i'm reading in a number character by character from a file. It will read an integer and push it into integerQueue up until it reaches a '.', then it will switch to inputting it into a realQueue.

它需要打印出来,即Real:123.4343

Then when i print, it needs to print out i.e. Real: 123.4343

但现在输出是Real:123.整数4343

But right now the output is Real: 123. Integer 4343

不知何故我的while循环或我的if语句没有做它的工作。我只是找不到我的错误

Somehow my while loop or my if statement isn't doing its job. I just can't find my error

问题是,如何修复我的输出,以便它打印出123.4343

question is, How do I fix my output so that it prints out 123.4343

    //if the realQueue is empty, then we just read in an integer, currentState must be 1, in order to print integer
            if(realQueue.empty() || currentState == '1')//implementation of the FSM
            {
                    writeFile <<"Integer:       ";
                    while(!integerQueue.empty())
                    {
                    writeFile <<integerQueue.front();
                    integerQueue.pop();
                    }
            }
            //since the realQueue has values in it, then it must bea real Number
            else
            {
                //currentState = '2';
                // currentState must be == '2', since wwe have a real number to print

                    writeFile<<"Real:           ";
                        //currentState has to be in real mode for it to print out to file
                        while(!integerQueue.empty() && currentState == '2')
                        {
                        writeFile <<integerQueue.front();
                        integerQueue.pop();
                        }
                        // currentState has to be in real mode for it to print out to file
                        while(!realQueue.empty() && currentState == '2')
                        {
                        writeFile <<realQueue.front();
                        realQueue.pop();
                        }

            } 


推荐答案

尝试建立这个循环,看看会发生什么。

Try comminting this loop out and see what happens.

while(!integerQueue.empty() && currentState == '2') 
{ 
  writeFile <<integerQueue.front(); 
  integerQueue.pop(); 
} 

这篇关于以正确的顺序输出队列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆