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

刚看到第三次作业时,首先映入眼帘的陌生词汇是类。心里不免一怔,毕竟还没接触过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