小编Joe*_*oel的帖子

C++:最优雅的方法来终止迭代字符串向量的循环?

假设我创建了一个大小尚未表示且其元素为字符串的向量.我想使用for循环和字符串将字符串输入到此向量中cin.然后,当用户输入完字符串后,我希望for循环终止.

我知道有两种方法可以做到这一点.可以使用Windows上的Ctrl + Z或Unix上的Ctrl + D终止输入流.我也可以使用带有a的if语句break,这样在某个字符串的输入上,如"end"循环终止.

我的实施将是后两者:

vector<string> words;

for(string temp; cin >> temp;)
{
    if(temp == "end")
    {break;}

    else
    {words.push_back(temp);}
}
Run Code Online (Sandbox Code Playgroud)

因此,对于输入foo bar,循环不会终止,但对于输入foo bar end,循环终止(并且foo end bar循环将终止,使得向量仅包含字符串"foo").

上面的实现是最好的方法吗?使用Ctrl + Z或Ctrl + D会更有效,因为这样可以避免在每次迭代中都经过if语句吗?

如果我们改为有一个元素类型int为vector的向量,那么这将是不同的,因为用户可以输入任何不是整数的东西来终止循环.但是在字符串的情况下,用户输入的任何内容都可以被视为字符串.

我正在阅读Bjarn Stroustrup的第4章,"编程 - 使用C++的原理和实践".

c++ string loops vector

2
推荐指数
1
解决办法
91
查看次数

标签 统计

c++ ×1

loops ×1

string ×1

vector ×1