使用 cin 使我的代码无法正常工作

Using cin makes my code not work properly

我是 c++ 的新手,尝试了这个项目并让它工作。基本上它需要一个单词和一个句子,然后只要在句子中找到该单词,就会将单词更改为星号。

我面临的问题是我尝试更进一步,要求用户输入一个单词并输入一个句子,然后将它们用作存储变量 运行 代码,方法完全相同和以前一样,但这不起作用,只输出句子的第一个单词。我不明白为什么要这样做。除了 cin 之外,一切都一样。我只是不明白 cin 如何处理字符串?

主要代码:

#include <iostream>
#include <string>

#include "functions.hpp"

using namespace std;

int main() {

  string word = "brocolli";
  string sentence = "Roll up that brocolli. I love brocolli!";

  bleep(word, sentence);

  for (int i = 0; i < sentence.size(); i++) {

    cout << sentence[i];

  }

  cout << "\n";

  return 0;

}

头文件:

#include <string>

void asterisk(std::string word, std::string &text, int i);

void bleep(std::string word, std::string &text);

函数文件:

#include <string>

#include "functions.hpp"

using namespace std;

void asterisk(string word, string &text, int i) {
  
  for (int k = 0; k < word.size(); ++k) {

    text[i+k] = '*';

  }

}

void bleep(string word, string &text) {

  for (int i = 0; i < text.size(); ++i) {

    int match = 0;

    for (int j = 0; j < word.size(); ++j) {

      if (text[i+j] == word[j]) {

        ++match;

      }

    }

    if (match == word.size()) {

      asterisk(word, text, i);

    }
    
  }

}

调整了主要代码以包含 cin:

#include <iostream>
#include <string>

#include "functions.hpp"

using namespace std;

int main() {

  string word;
  string sentence;

  cout << "Word: ";
  cin >> word;

  cout << "Sentence: ";
  cin >> sentence;

  bleep(word, sentence);

  for (int i = 0; i < sentence.size(); i++) {

    cout << sentence[i];

  }

  cout << "\n";

  return 0;

}
  cout << "Sentence: ";
  cin >> sentence;

您在此处使用的 operator>> 函数在第一个 space 字符处停止读取。不适合阅读 的文本。