【发布时间】:2017-07-19 17:19:17
【问题描述】:
在下面的代码中,如何正确声明一个struct类型的堆栈,并将字符串压入堆栈,以便将它们保存在struct中?您如何指定要将变量推送到结构的某个变量中的位置?导致错误的行被注释掉。谢谢!
#include <iostream>
#include <stack>
using namespace std;
struct purchasedItem
{
string Name;
float Cost;
};
int main()
{
stack<purchasedItem> shoppingBasket;
string word=" ";
cout << "Enter some items:" << endl;
while(word!="quit")
{
cin >> word;
shoppingBasket.push(word); // this line causes an error
}
return 0;
}
【问题讨论】:
-
您有一堆
purchasedItems,但您正试图将string放入其中,但无法编译。您应该改为创建一个purchasedItem,将其Name设置为word,并可能初始化Cost和.push。 -
您创建一个包含您的单词和成本的那种类型的实例。你把那个实例推入堆栈。
-
题外话:由于测试的位置,您将把单词 quit 添加到堆栈中(如果可能的话)
while(cin >> word && word!="quit")将读取一个单词,确保它确实被读取并且流没有结束什么的,然后测试读取的单词不是“退出”。 -
谢谢!它有效