使用 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 字符处停止读取。不适合阅读 行的文本。
我是 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 字符处停止读取。不适合阅读 行的文本。