C++ 推送到堆栈的值不是我弹出的值C++;
例如,如果我按下一个4,当我做一个弹出,它会显示为52 我做错了什么?我该如何修复它 IntegerStack.cppC++ 推送到堆栈的值不是我弹出的值C++;,c++,stack,C++,Stack,例如,如果我按下一个4,当我做一个弹出,它会显示为52 我做错了什么?我该如何修复它 IntegerStack.cpp #包括“IntegerStack.h” #包括 使用名称空间std; IntegerStack::IntegerStack() { 使用=0; } void IntegerStack::push(int条目) { 数据[使用]=输入; ++使用; } int IntegerStack::pop() { --使用; 返回数据[已使用]; } int IntegerStack::p
#包括“IntegerStack.h”
#包括
使用名称空间std;
IntegerStack::IntegerStack()
{
使用=0;
}
void IntegerStack::push(int条目)
{
数据[使用]=输入;
++使用;
}
int IntegerStack::pop()
{
--使用;
返回数据[已使用];
}
int IntegerStack::peek()常量
{
返回数据[used-1];
}
IntegerStack.h
\ifndef INTEGERSTACK\u H
#定义INTEGERSTACK_H
#include//提供类型大小。
使用名称空间std;
类整数堆栈
{
公众:
//成员常数
静态常数标准::容量=100;
//默认构造函数
IntegerStack();//内联
//修改成员函数
无效推送(int输入);
int-pop();
//常数成员函数
std::size\u t size()常量{return used;}//Inline
bool为空()常量{return used==0;}//Inline
int peek()常数;
私人:
//数据成员
int数据[容量];
标准:使用的尺寸;
};
#endif//INTEGERSTACK_H
main.cpp
#包括
#包括
#包括“IntegerStack.h”
使用名称空间std;
int main()
{
字符串内容;
ifstream输入文件;
内容;
整数堆栈;
//打开文件
open(content.c_str());
如果(输入文件)
{
//将值放入堆栈中
while(getline(inputFile,content))
{
cout我可以通过将operanstack.push(内容[I]);
更改为operanstack.push(内容[I]-“0”);
突击测验来解决这个问题。什么数据类型是content[I]
。作为一个数字,该数据类型的值是多少?它是一个整数@SamVarshavchikYou相信您的std::string
包含整数?您的内容是一个std::string
不,恐怕它不包含整数。这就是将字符“8”(ASCII 56)转换为实际整数的结果56.感谢您提供输入和工作复制。字符8实际上是ascii中的整数56,很容易出错。