gpt4 book ai didi

c++ - 尝试创建队列 - C++ 崩溃问题

转载 作者:太空宇宙 更新时间:2023-11-04 14:02:04 25 4
gpt4 key购买 nike

对于我的数据结构类(class),我必须创建一个从 .dat 文件获取输入的队列,并根据高优先级(仅当它为 1)和低优先级(2、3、4 或 5)组织它。必须有两个队列,* 表示要服务(或移除)多少个。 .dat 文件如下所示:

R 3
T 5
W 1
A 4
* 3
M 5
B 1
E 1
F 2
C 4
H 2
J 1
* 4
* 1
D 3
L 1
G 5
* 9
=

这是main.cpp

int main ()
{
arrayQueue myHigh; //creates object of arrayQueue
arrayQueue myLow; //creates another object of arrayQueue


while(previousLine != "=") //gets all the lines of file, ends program when it gets the line "="
{
getline(datfile, StringToChar);
if (StringToChar != previousLine)
{
previousLine=StringToChar; //sets previousline equal to a string
number = StringToChar[2]; //the number of the data is the third line in the string
istringstream ( number ) >> number1; //converts the string to int
character = StringToChar[0]; //the character is the first line in the string

}

if (number1 == 1) //if number is 1, sends to high priority queue
myHigh.addToQueue(number1);
else if (number1 == 2 || number1 == 3 || number1 == 4 || number1 == 5) //if number is 2 3 4 or 5 sends to low priority queue
myLow.addToQueue(number1);

}
datfile.close();
system ("pause");
}

这是数组类:

void arrayQueue::addToQueue(int x)
{
if (full() == true)
cout << "Error, queue full \n";
else {
fill = (fill+1)%maxSize;
queueArray[fill] = x;
cout << x << endl; //testing that number is actually being passed through
count++;
size++;
}
}

但是,我得到的输出只是:

3
5

然后它没有错误地崩溃了。

我不确定我应该去哪里,我之前没有在 C++ 中创建一个类的两个对象或使用文件读取数据。我做对了吗?我认为它只是将 3 和 5 送入高优先级队列,尽管它不应该这样做。

最佳答案

因为输出通常是缓冲的,所以在程序崩溃之前您可能看不到所有输出。根据我对您的代码的检查,我预计它会在到达输入文件的最后一行时崩溃,因为 StringToChar 的长度为 1 而您正在访问 StringToChar[2]。好吧,也许不会崩溃,但肯定会得到垃圾。我不确定字符串是否会引发异常。

关于c++ - 尝试创建队列 - C++ 崩溃问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18883987/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com