Supposons que je souhaite lire les lignes de la console et les placer dans un conteneur jusqu'à ce que l'utilisateur entre une ligne vide. Cependant, je ne veux pas que cette ligne blanche se retrouve dans mon conteneur. Je peux penser à cinq solutions différentes:Lecture jusqu'à ce que l'utilisateur entre ligne vide
a) la rupture de la boucle
std::vector<std::string> container;
for (; ;)
{
std::string line = get_input();
if (line.empty()) break;
container.push_back(line);
}
b) lire avant boucle et à l'intérieur boucle
std::vector<std::string> container;
std::string line = get_input();
while (!line.empty())
{
container.push_back(line);
line = get_input();
}
c) lu dans le cadre de l'état de la boucle, la version d'affectation
std::vector<std::string> container;
std::string line;
while (!(line = get_input()).empty())
{
container.push_back(line);
}
d) lu dans le cadre de l'état de la boucle, la version de la séquence
std::vector<std::string> container;
std::string line;
while (line = get_input(), !line.empty())
{
container.push_back(line);
}
e) lire trop, l'enlever après la boucle
std::vector<std::string> container;
std::string line;
do
{
line = get_input();
container.push_back(line);
}
while (!line.empty());
container.pop_back();
Alors, quelle solution préférez-vous et pourquoi? Quel serait le plus facile à comprendre pour un débutant?
qui est bien surpuissant essayant d'accomplir. –
Je suppose que cela dépend de combien de fois vous avez besoin de le faire - si vous ne l'utilisez qu'une fois, je peux voir où vous pourriez argumenter que c'était en quelque sorte exagéré, mais étant donné que c'est seulement environ 10 lignes de code, je ne pensez pas que vous auriez à l'utiliser très souvent pour le justifier. –