老师要求做一个无符号大整数计算器,打算用vector容器。
vector在子函数中定义没有问题。但是在主函数定义传入子函数就出现了问题。
说vector超出了范围。
定义的子函数在.H文件中
#pragma once
#ifndef IO_H
#define IO_H
#include<iostream>
#include<string>
#include<vector>
//输入数组最大有效长度
constexpr auto MAX = 100;
using namespace std;
void IO( char a[], UnsignedInt UnintA);
void IO(char a[],UnsignedInt UnintA)
{
vector<int>iterator = UnintA.unint;
//cin >> a;
//记录输入的数据长度
int i = 0;
int max;
do {
if (a[i] != '\0')
{
i++;
}
else
{
break;
}
} while (i<MAX);
max = i;//数组长度已被记录
cout << max << endl;
//到这里程序执行无误!!!!!!!
//需要判断是否输入的是无符号大整数
i = 0;
while (i < max)
{
if ((a[i] != '0') && (a[i] != '1') && (a[i] != '2') && (a[i] != '3') && (a[i] != '4') && (a[i] != '5')
&& (a[i] != '6') && (a[i] != '7') && (a[i] != '8') && (a[i] != '9'))
{
cout << "您输入的数据有误,请检查后请重新输入。" << endl;
cout << "请输入更改后的数据:";
i = 0;
cin.clear();
break;
}
i++;
}
//i = 1; //临时判断
//数据进入vector容器当中
if (i != 0)
{
//UnsignedInt UnintA;
{
for (i = 0; i < max; i++)
{
iterator.push_back(a[i] - 48);
}
}
cout << endl;
/*
//数据导入检测
for (i = 0; i < max; i++)
{
cout << UnintA.unint[i];
}
*/
}
}
#endif // !IO_H
定义的UnsignedInt类
#pragma once
#ifndef BASE_H
#define BASE_H
#include<vector>
#include <string>
using namespace std;
class UnsignedInt
{
public:
//记录数字的ascll码值
//int unint[100];
vector <int> unint;
//记录数字正负值,由于输入都是无符号大整数,所有的标注初始化都是TRUE
bool Sign = true;
void unput()
{
}
};
主函数部分
#include "Base.h"
#include "IO.h"
#include<string>
#include <iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{
char chs[100];
cin >> chs;
UnsignedInt UnintA;
//UnsignedInt *p;
//p = &UnintA;
IO(chs, UnintA);
int i = 0, max = 100;
for (i = 0; i < max; i++)
{
cout << UnintA.unint[i];
}
}
然后就出现了感人的一幕
```
有想过指针代替类的地址,但是还是出现了相同的问题。是不是这么用类出现的问题。现在类是不是并没有在内存中开辟空间?
还请高人指点一二,鄙人不胜感激。