假設我想從控制檯讀取行並將它們放入容器中,直到用戶輸入空行。不過,我不想讓那空白的行結束在我的容器中。我能想到的五種不同的解決方案:直到用戶輸入空白行
一)從迴路斷線
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();
所以刪除它,你更喜歡哪解決,爲什麼?初學者最容易理解哪一個?
這樣的方式,矯枉過正他是什麼試圖完成。 – 2010-12-10 14:21:33
我想這取決於你需要這麼做的頻率 - 如果你只使用它一次,我可以看到你可以爭辯說它有點矯枉過正,但鑑於它只有大約10行代碼,我不要以爲你必須經常用它來證明它的合理性。 – 2010-12-10 14:25:05