while (条件式){
...(処理)
}
C/C++でwhile文を用いた繰り返し処理を紹介します。
while文を利用すると、条件式が真(true)である限りブロック内のループ処理を実行し続けます。条件式が偽(false)になった場合に、ループから抜け出します。また、最初から条件式が偽(false)であった場合はブロック内部の処理は一度も実行されません。
コンソールアプリケーションを作成し、下記のコードを記述します。
#include "stdafx.h"
#include <iostream>
int main()
{
bool exit = false;
while (exit == false) {
std::cout << ">";
char buffer[128];
std::cin >> buffer;
std::string str(buffer);
if (str == "quit") {
exit = true;
}
}
std::cout << "whileループを抜けました。";
std::cin >> buffer;
return 0;
}
while文の条件式は exit==false であり、exit変数がfalseである限りループが実行されます。ループの内部では画面に">"の文字を表示し、入力待ち状態になります。標準入力で入力された文字列はchar型配列のbufferに格納されます。その後std:string型のstrに変換され、文字列判定をします。入力された文字列が"quit"であれば、exit変数の値をtrueにすることでループから抜けます。
bool exit = false;
while (exit == false) {
std::cout << ">";
char buffer[128];
std::cin >> buffer;
std::string str(buffer);
if (str == "quit") {
exit = true;
}
}
上記のプログラムを実行します。コマンドプロンプトウィンドウが表示され、下図の状態になります。">"が表示され入力待ち状態になっています。
"Penguin"を入力し[Enter]キーを押します。">"が表示され入力待ち状態になります。
文字列を入力して[Enter]キーを押します。"quit"ではない文字列のため、ループ内の処理が実行され入力待ち状態が続きます。
"quit"を入力し[Enter]キーを押します。
"quit"が入力されたため、whileループから抜け出し、whileループを抜けた旨のメッセージが表示されます。
STLを利用しないCスタイルのコードも紹介します。
#include "stdafx.h"
int main()
{
bool exit = false;
while (exit == false) {
printf(">");
char buffer[128];
fgets(buffer, 128, stdin);
if (strcmp(buffer,"quit\n") == 0) {
exit = true;
}
}
return 0;
}