读书人

#includelt;stackgt;使用有关问题

发布时间: 2012-11-08 08:48:12 作者: rapoo

#include<stack>使用问题
#include <iostream>
#include <stack>
using namespace std;
struct elem { char name[20]; };
istream &operator >> (istream &in, elem &e)
{ return in >> e.name; }

ostream &operator << (ostream &out, const elem &e)
{ return out << e.name; }

int main(int argc,char* argv[])
{
elem e;
stack<elem> s;

for (int i = 0; i < 3; i++)
{
cin >> e;
s.push(e);
}

for (;!s.empty();s.pop())
cout << s.top() << endl;

return 0;
}
在使用栈的功能时,由于在自己编各个函数很麻烦,所以找人问了<stack>的用法,如果是多组的字符串输入又没办法一个一个定义变量,上面是别人交的,是能使一次输入多组字符串,由于C++没学多少,上面对于输入,出的流重载那段能解释下吗,还有这样被重载后在输入例如字符串的数据有影响吗,如果大家还有其他能解决<stack>这种多组字符串输入的方法希望能教下。

[解决办法]

C/C++ code
#include <iostream>#include <string>#include <vector>#include <iterator>using namespace std;int main(){    string str[3];    cout<<"a example of string:";    for(int i=0; i<3; ++i)        cin>>str[i];        for(i=0; i<3; ++i)        cout<<str[i]<<endl;    vector<string> vec;    cout<<"a emp of vector:";    string temp;    while(cin>>temp)            //ctrl+z终止        vec.push_back(temp);   //向vector容器中加入数据    for(vector<string>::iterator it = vec.begin(); it!=vec.end(); ++it)            //标准库迭代器        cout<<*it<<endl;        return 0;} 

读书人网 >C++

热点推荐