Предположим, я хочу прочитать строки из консоли и поместить их в контейнер, пока пользователь не введет пустую строку.Я не хочу, чтобы эта пустая строка заканчивалась в моем контейнере.Я могу думать о пяти различных решениях:
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) чтение как частьусловия цикла, версия присвоения
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();
Итак, какое решение вы бы предпочли и почему?Что будет проще всего понять новичку?