此代码尝试测试字符串是否是回文。它读取一串字符,将每个字符读入堆栈并同时将其添加到队列中。然后,它使用基本的堆栈和队列操作来确定字符串是否是回文。错误:在回文程序中从'char'无效转换为'const char *'
该方案与上述错误(S),当它击中炸毁:
inStack.push(inString[i]);
inQueue.push(inString[i]);
,我不明白为什么,或如何解决它。我已经完成了对这个错误的研究,因为它适用于我的案件并没有取得丰硕的成果。我对C++相当陌生,所以如果我忽略了一些愚蠢的行为,请原谅我。
的代码如下:
#include <iostream>
#include <stack>
#include <queue>
#include <string>
using namespace std;
int main()
{
stack <string> inStack;
queue <string> inQueue;
string inString; //user input
int inLength; //loop counter variable
bool isPalindrome(false);
cout<<"Enter a word to see if it is a palindrome: ";
cin>>inString;
if (inString.size() > 0)
{
for (int i = 0; i <= inLength; i++)
{
inStack.push(inString[i]); //put string chars onto stack
inQueue.push(inString[i]); //add string chars to queue
}
isPalindrome = true;
while (isPalindrome && (!inStack.empty()) && (!inQueue.empty()))
{
if (inStack.top() != inQueue.front())
{
isPalindrome = false;
}
else
{
inStack.pop();
inQueue.pop();
}
}
}
if(isPalindrome == false)
{
cout<<"It is not a palindrome."<<endl;
}
else
{
cout<<"It is indeed a palindrome."<<endl;
}
return 0;
}
inString [i]是一个字符,而不是一个字符串。如果你想要这样做,你应该尝试在inStack中创建一个char向量。另外,您应该发布完整的编译器消息,包括行号。 – xaxxon
你不明白你为什么不能把'char'转换成'const char *'?你明白为什么''A''永远不会被转换为,例如'0x40000144'?你的容器设置为你添加'string'元素给他们。也许你打算让他们接受'char'类型呢? – mah
你的堆栈应该保存字符,而不是字符串。但是,错误消息没有意义。我确定它来自不同的程序。 – SergeyA