Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 错误:从';char';至';常量字符*';回文程序_C++ - Fatal编程技术网

C++ 错误:从';char';至';常量字符*';回文程序

C++ 错误:从';char';至';常量字符*';回文程序,c++,C++,这段代码试图测试字符串是否为回文。它读取一个字符串,在读取时将每个字符推到堆栈上,同时将其添加到队列中。然后,它使用基本的堆栈和队列操作来确定字符串是否为回文 当程序遇到以下错误时,程序会出现上述错误: inStack.push(inString[i]); inQueue.push(inString[i]); 我不明白为什么,也不知道如何修复它。我对这一错误进行的研究在适用于我的案例时并没有取得成果。我对C++相当陌生,所以如果我忽略了一些愚蠢的东西,请原谅我。< /P> 代码如下: #inc

这段代码试图测试字符串是否为回文。它读取一个字符串,在读取时将每个字符推到堆栈上,同时将其添加到队列中。然后,它使用基本的堆栈和队列操作来确定字符串是否为回文

当程序遇到以下错误时,程序会出现上述错误:

inStack.push(inString[i]);
inQueue.push(inString[i]);
我不明白为什么,也不知道如何修复它。我对这一错误进行的研究在适用于我的案例时并没有取得成果。我对C++相当陌生,所以如果我忽略了一些愚蠢的东西,请原谅我。< /P> 代码如下:

#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;
}
#包括
#包括
#包括
#包括
使用名称空间std;
int main()
{
stack inStack;
排队;
string inString;//用户输入
int inLength;//循环计数器变量
bool isPalindrome(假);
库廷字符串;
如果(inString.size()>0)
{

对于(inti=0;i您忘记了将字符串的实际长度指定给inLength,而得到了一个外部值i变得非常大,比它应该的大,您可能会得到一个分段错误

读取字符串后,请尝试正确分配值

inLength = inString.size();

我希望这对您有所帮助。

您的代码中有三个主要错误

您正在将字符推送到定义为保存字符串的堆栈和队列上。字符串构造函数无法隐式地从字符转换为字符串,因为没有接受字符的构造函数。您可能打算将它们定义为:

stack<char> inStack;
queue<char> inQueue;
if(inString.size()>0)之后{
来修复该问题


最重要的是,使用
i指令[i]是一个字符,而不是字符串。如果你想这样做,你应该试着让inStack成为字符的向量。此外,你应该发布完整的编译器消息,包括行号。你不明白为什么不能将
char
转换为
const char*
?你明白为什么
'a'
永远不会被转换吗例如,
0x40000144
?您的容器设置为向其中添加
string
元素。也许您想让它们接受
char
类型?堆栈应该包含字符,而不是字符串。但是,错误消息没有意义。我确信它来自不同的程序。
inLength = inString.size();
#include <iostream>
#include <string>
#include <vector>

using namespace std;

int main()
{
    vector<char> left, right; // left-to-right and right-to-left lists

    cout<<"Enter a word to see if it is a palindrome: ";
    string inString; //user input
    cin>>inString;

    if(!inString.empty()){
        // add characters left to right
        left.insert(left.end(), inString.begin(), inString.end());
        // add characters in reverse order, right to left
        right.insert(right.end(), inString.rbegin(), inString.rend());
        // compare the two vectors
        if(left == right)
            cout<<"It is indeed a palindrome."<<endl;
        else
            cout<<"It is not a palindrome."<<endl;
    }
}