如下是设计检测重复字串的代码:
using namespace std;
int main() {
string previous = " ";
string current;
cin >> current;//输入the cat cat jump
//while(cin>>current)
//{
// cout << current<<"\n";//能分别输出 cat cat 及 jump
//}
while (cin>>current)
{
if (previous == current)
cout << "repeated word:" << current << "\n";
previous = current;
}
}
原理是:while 检测 输入current的字串,并将前一个字串储存至previous,如何判断是否current=pervious,若相等输出此相同字串
我输入的字串是 the cat cat jump
当cin读取此字串
由于空格键会将其分成多个字串
先识别the,cat cat jump此三个字串储存在缓存中
等到下一次进行while时识别cat,如此循环
是否其他语言类似Java的while 工作原理也是如此(会读取std缓存内容)
还是说这是c++独有的
可参考:https://blog.csdn.net/bravedence/article/details/77282039
原以为是while的原因,看了下这篇博客,发现应该是cin>>的原因;
cin>> 当输入字串包括空格即会被cin>>忽略清楚继续读取下个字符,此时由于while不能一次性全读完
读了the之后执行下面的代码,在进行while判断时,由于此特性,能继续进行第一个cat的判断