C :终止循环的最优雅方法,该循环在字符串向量上迭代



说我创建了一个尚未表示大小的向量,其元素是字符串。我想使用for loop和 cin将字符串输入此向量。然后,当用户完成输入字符串时,我希望for循环终止。

我知道这样做的两种方法。可以使用Windows上的CTRL Z或UNIX上的Ctrl D终止输入流。我也可以使用break使用IF语句,因此在某个字符串的输入(例如"end")的输入中,Loop终止。

我的实现将是两者的后者:

vector<string> words;
for(string temp; cin >> temp;)
{
    if(temp == "end")
    {break;}
    else
    {words.push_back(temp);}
}

因此,对于输入foo bar,循环不会终止,但是对于输入foo bar end,循环终止(对于foo end bar而言,循环将终止,以使向量仅包含字符串"foo")。

)。

上述实现是最好的方法吗?仅使用Ctrl Z或Ctrl D会更有效,因为这避免了每次迭代中必须通过IF语句?

,如果我们有一个元素为int的元素,这将是不同的,因为用户可以输入任何不是整数的东西以终止循环。但是对于字符串,用户输入的任何内容都可以视为字符串。

我正在通过Bjarn Stroustrup的《编程 - 使用C 的原理和练习》的第4章工作。

我宁愿循环标头来反映预期的退出条件,因此,如果您想阅读直到用户输入end,我更喜欢在循环的条件:

for (std::string temp; std::cin >> temp && temp != "end"; )
    words.push_back(temp);

就"效率"而言,在这种情况下,几乎肯定是无关紧要的。专注于使代码简单易读。仅在测量时进行优化。

最新更新