今回は、文字列をどんどん格納して、これを先頭から読み出してみるプログラムを作ります。
読み出す前であれば、何回もデータを格納できます。
読み出した後では、最初からデータを入れることになります。
では、サンプルを見てみましょう。
// queue02.cpp #include <iostream> #include <queue> #include <string> #include <conio.h> using namespace std; int menu(); int myinput(); int myread(); queue<string> qu; int main() { menu(); return 0; } int menu() { string no; int nNo; while (1) { cout << "*************************" << endl; cout << "1.データの格納" << endl; cout << "2.データの読み出し" << endl; cout << "0.終了" << endl; cout << "*************************" << endl; cout << "選択番号----"; cin >> no; nNo = atoi(no.c_str()); switch (nNo) { case 0: return 0; case 1: myinput(); break; case 2: myread(); break; default: cout << "番号が不正です" << endl; continue; } } return 0; } int myinput() { string data; while (1) { cout << "文字列(eで終了)---"; cin >> data; if (data == "e") break; qu.push(data); } return 0; } int myread() { int i, j; j = (int)qu.size(); if (j == 0) { cout << "読み出すデータがありません" << endl; return -1; } cout << "読み出すとデータは無くなります" << endl; for (i = 0; i < j; i++) { cout << qu.front() << endl; qu.pop(); } cout << "何かキーを打つとメニューに戻ります" << endl; getch(); return 0; }あまり意味のないプログラムです。
main関数からはmenu関数が呼ばれているのみです。 menu関数では、ユーザーの指定した番号に従ってmyinputまたは、myread関数を 呼んでいます。
いろいろ改良して遊んでみてください。
Update Jun/21/2004 By Y.Kumei