#include <iostream>
using namespace std;
int main()
{
string previous;
string current;
while (cin >> current)
{
if(current == previous)
{
cout << "repeated word";
}
previous=current;
}
return 0;
}
我的问题是:
当它指出while(cin>>current)
时,为什么整个输入的文本字符串未分配给当前?我不明白它是如何单独比较所有单词的。
它是如何为之前的一句话得到的。它是如何知道2个相同的单词是相邻的?
cin
赋值并且第一个字被分配给当前,然后它将它与前一个词进行比较,但由于它是第一个词,它没有前一个单词所以它只是将第一个单词分配给前一个单词并比较句子中的下一个单词,直到没有剩下的单词为止。我很确定这是它的工作原理但我会留下这个以防万一有人想知道类似的东西。
答案 0 :(得分:2)
std::cin >> std::noskipws
。答案 1 :(得分:1)
std::istream::operator>>
与std :: string参数一起使用,它会读取字符,直到找到任何空格字符。这意味着如果您输入一个句子,它只会读取一个“单词”。使用std::getline(cin, current);
读取整行(直到换行符)。previous = current
。这意味着在阅读current
后,您需要previous
current
。因此,下次在您阅读之前,您可以将先前与当前进行比较,看看它们是否相同。答案 2 :(得分:-1)
如果您想使用字符串,则必须使用k
或#include string