第三次作业中遇到的困难和解决方法

刚看到第三次作业时,首先映入眼帘的陌生词汇是类。心里不免一怔,毕竟还没接触过c++中的类,马不停蹄上慕课网看视频——c++远征封装篇。在视频中老师说明了类和对象的定义,视频看了一遍又一遍才大体知道类和对象的概念和使用。

继续看题目发现自己还未接触过queue的用法,通过百度知道了queue中如front、push、pop⋯⋯的用法以及建立queue。
在输入的方面,对于string的使用,我通过在慕课网学习,自己能够正确利用这个“利器”。

对于四则运算式子的分离,可发了难,通过询问,在表哥的点播下我试着将数字和符号分为两类,用set放所有符号,再对字符串逐个判断是否为符号,再string一个空字符串,对其clear,push。并逐步放进队列。

主要代码如下:
Scan.cpp

queue<string> Scan::ToStringQueue(string input)
{
queue<string> strs;  //建立队列 strs

string temp="";  //定义一个空字符串 temp

for (unsigned int i=0; i<input.size(); i++)  //对输入的字符串逐个检索
{
    if (temp.size()>10)  //输入的字符串中的某个字符超过10位
    {
        cout<<temp<<":超出10位"<<endl;

        queue<string> rs;  //定义一个空队列 rs

        return rs;
    }

    if (charset.find(input[i])!= charset.end())  //字符串中的第i个字符不为四则运算中的符号
    {
        if (temp!="")  //字符串temp不为空
        {
            strs.push(temp); //将字符串temp中的元素加入队列strs

            temp.clear();  //将字符串temp清空
        }

        temp.push_back(input[i]); //在字符串temp尾部添加该字符

        strs.push(temp);

        temp.clear();  //将字符串temp清空
    }
    
    else
    {
            temp += input[i];  //将该字符拼接到 temp后
    }
}

if (temp!="")  //字符串temp不为空
{
    strs.push(temp);  //将字符串temp中的字符加入队列strs

    temp.clear();
}
return strs;
}

Scan.h

#include <queue>
#include <string>
#include <set>
using namespace std;
class Scan
{
private:
set<char> charset;
public:
Scan(void);
~Scan(void);
queue<string> ToStringQueue(string input);
};

转载于:https://www.cnblogs.com/cjqcjq/p/5200326.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值