コンソールから行を読み込み、ユーザーが空白行を入力するまでそれらをコンテナに入れたいとします。私は空の行が私のコンテナに終わってしまわないようにしたい。ループ条件の一部、割り当てバージョンとして読まユーザーが空白行を入力するまでの読み取り
a)のループ
から休憩std::vector<std::string> container;
for (; ;)
{
std::string line = get_input();
if (line.empty()) break;
container.push_back(line);
}
b)はループの前に読んで
std::vector<std::string> container;
std::string line = get_input();
while (!line.empty())
{
container.push_back(line);
line = get_input();
}
ループ内C):私は、5つの異なる解決策を考えることができます
std::vector<std::string> container;
std::string line;
while (!(line = get_input()).empty())
{
container.push_back(line);
}
d)ループ条件の一部として、シーケンスバージョン
std::vector<std::string> container;
std::string line;
while (line = get_input(), !line.empty())
{
container.push_back(line);
}
e)に、あまりにも多くを読んだから、ループの後
std::vector<std::string> container;
std::string line;
do
{
line = get_input();
container.push_back(line);
}
while (!line.empty());
container.pop_back();
それを削除し、その解決策は、あなたが好む、なぜでしょうか?何が初心者のために理解するのが最も簡単でしょうか?
は彼が何のためにWAY行き過ぎすなわち達成しようとしている。 –
私はそれがあなたがそれをやる必要があるかどうかにかかっていると思います。もしあなたが一度だけ使っているのであれば、それは過度のものだと主張できるところがわかります。しかし、あなたがそれを正当化するために非常に頻繁に使用しなければならないとは思わないでください。 –