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


    刚看到第三次作业时,首先映入眼帘的陌生词汇是类。心里不免一怔,毕竟还没接触过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);
    };
  • 相关阅读:
    友盟统计 新的集成方法
    Error:Unable to tunnel through proxy. Proxy returns "HTTP/1.1 400 Bad Request"解决方法
    关于如何获取Google 官方 NavgationView中的控件的方法
    使用线程池管理线程!
    文件上传MultipartBody使用方法
    Ddos 分布式拒绝服务 (报告)
    linux+
    模型事件
    广东惠州游
    PhoneGap & Cordova 安装白皮书
  • 原文地址:https://www.cnblogs.com/cjqcjq/p/5200326.html
Copyright © 2020-2023  润新知