C++ 弹出堆栈字符并将其保存为字符串时出现问题
我有时在编程方面有点麻烦,但我一般都很好,总是有完全理解这个概念的问题,但是当我试图实现一个实际的程序来执行一个操作时,我遇到了困难 我有一个任务要做,在这个任务中,我必须获取一个输入字符串,将其逐个字符读入堆栈(使用链表),然后将结果从堆栈中弹出,将其存储到一个新字符串,然后比较字符串以确定特定的输入字符串是否是回文 到目前为止,我似乎遇到的唯一问题是(希望)在节目的最后。当我尝试从堆栈中弹出每个字符并将它们分别存储在字符串中时,Visual Studio会遇到一个问题:“错误C2664:‘stack::pop’:无法将参数1从‘unsigned int’转换为‘char&’”C++ 弹出堆栈字符并将其保存为字符串时出现问题,c++,string,stack,C++,String,Stack,我有时在编程方面有点麻烦,但我一般都很好,总是有完全理解这个概念的问题,但是当我试图实现一个实际的程序来执行一个操作时,我遇到了困难 我有一个任务要做,在这个任务中,我必须获取一个输入字符串,将其逐个字符读入堆栈(使用链表),然后将结果从堆栈中弹出,将其存储到一个新字符串,然后比较字符串以确定特定的输入字符串是否是回文 到目前为止,我似乎遇到的唯一问题是(希望)在节目的最后。当我尝试从堆栈中弹出每个字符并将它们分别存储在字符串中时,Visual Studio会遇到一个问题:“错误C2664:‘s
void Stack::pop(字符和输入字符串){
StackNode*temp;
if(isEmpty()){
下一步;
删除顶部;
顶部=温度;
}
}
int main(){
堆栈-字符串堆栈;
字符串输入_字符串;
字符串反向输入;
无法输入_字符串;
for(无符号整数i=0;i
while (!stringStack.isEmpty()) {
for (unsigned int j=0; j < input_string.length(); j++) {
stringStack.pop(j) = reverse_input[j];
}
}
或:
另外,stringStack.pop(j)=反向输入[j];
实际上没有赋值,因为pop
是一个无效函数
一个备选方案是:
修改pop
,使其返回顶部的char
元素
char Stack::pop() {
StackNode* temp;
char mychar = '\0';
if (isEmpty()) {
cout << "The stack is empty." << endl;
}
else {
mychar = top->value;
temp = top->next;
delete top;
top = temp;
}
return mychar;
}
是(!stringStack.esEmpty()时的)
必要吗?在我看来,您只需要迭代for
一次就可以填充反向输入列表,假设for
工作正常,实际上,您只能使用而不是for
,因为您声明了对单个字符不是字符串。对1个或多个字符使用std::string
。您没有停下来阅读错误消息并查看生成错误消息的代码。您正在传递循环索引j
,其中需要一个字符。如果您查看生成错误的行,答案就在那里。
for( unsigned int j = 0; !stringStack.isEmpty() ; j++ ){
//Code Here
}
while( !stringStack.isEmpty() ){
//Code Here
}
char Stack::pop() {
StackNode* temp;
char mychar = '\0';
if (isEmpty()) {
cout << "The stack is empty." << endl;
}
else {
mychar = top->value;
temp = top->next;
delete top;
top = temp;
}
return mychar;
}
reverse_input = ""; //To make sure it is empty
while( !stringStack.isEmpty() ){
reverse_input += stringStack.pop();
}