此代碼嘗試測試字符串是否是迴文。它讀取一串字符,將每個字符讀入堆棧並同時將其添加到隊列中。然後,它使用基本的堆棧和隊列操作來確定字符串是否是迴文。錯誤:在迴文程序中從'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