我是c++初学者,现在想利用栈来实现判断输入字符串是否回文的小程序,利用的思路是先让字符串入一次栈再出栈实现字符串倒序,再与入栈前的字符串状态比较来得出是否是回文,由于我c++还不是很熟练,一直卡在这,求大神帮忙看看怎么解决:
#pragma once
#include <iostream>
#include <cstdio>
#ifndef _SEQSTACK_H_
using namespace std;
template <class T>
class seqStack
{
private:
T *data; //动态数组指针
int top; //顶元素
int maxSize; //栈大小
public:
seqStack(int size);
~seqStack() { }
void clear();
int size();
bool empty()const { return top == -1; }//判空
bool full() {return top==maxSize-1}//判满
void push(T const& value);
T getTop()const;
T pop(T value);
};
#endif
//头文件
#include"seqStack.h"
using namespace std;
template<class T>
seqStack<T>::seqStack(int size) //构造函数
{
maxSize = size;
top = -1;
data = new T[maxSize];
}
template <class T>
T seqStack<T>::getTop()const //获栈顶元素
{
if (top=-1)
throw "the Stack is empty";
return data[top];
}
template <class T>
T seqStack<T>::pop(T value) //出栈
{
if (top==-1)
throw"the Stack is empty"
return value=data[top--];
}
template <class T>
void seqStack<T>::push(T const& value) //进栈
{
if (full())
throw"the stack is full"
else data[++top] = value;
}
//这里是类模板的定义
#include <iostream>
#include"seqStack.h"
#include"seqStackTemplate.cpp"
#include<string>
using namespace std;
int main()
{
seqStack<string> stack(500);
cout<< "=========Palindrome Judge==========";
cout << "Please enter several sets of string:";
string s;
string save;
string save1;
int z = 0;
while (1)
{
if (s != "STOP")
{
cin >> s;
save = s;
for (int i = 0;i < s.length;i++)
{
stack.push(s[i]); //这里报错了
}
for (int i = 0;i < s.length;i++)
{
stack.pop(s[i]); //这里报错了
}
save1 = s;
++z;
if (save1 == save)
cout << "#" << z << "YES" << endl;
else
cout << "#" << z << "NO" << endl;
}
}
}
//主函数的实现部分
编译器一直显示
E0415 不存在从 "char" 转换到 "std::basic_string, std::allocator>" 的适当构造函数
main函数的30行和26行都报上面这个错误,求大佬QAQ