教授给了我一个代码,该代码需要多行输入。我目前正在更改当前工作的代码,遇到一个问题。该代码旨在获取输入字符串,并将其分成句点中的句子,然后将这些字符串放入向量中。
vector<string> words;
string getInput() {
string s = ""; // string to return
bool cont = true; // loop control.. continue is true
while (cont){ // while continue
string l; // string to hold a line
cin >> l; // get line
char lastChar = l.at(l.size()-1);
if(lastChar=='.') {
l = l.substr(0, l.size()-1);
if(l.size()>0){
words.push_back(s);
s = "";
}
}
if (lastChar==';') { // use ';' to stop input
l = l.substr(0, l.size()-1);
if (l.size()>0)
s = s + " " + l;
cont = false; // set loop control to stop
}
else
s = s + " " + l; // add line to string to return
// add a blank space to prevent
// making a new word from last
// word in string and first word
// in line
}
return s;
}
int main()
{
cout << "Input something: ";
string s = getInput();
cout << "Your input: " << s << "\n" << endl;
for(int i=0; i<words.size(); i++){
cout << words[i] << "\n";
}
}
该代码将字符串放入向量中,但采用句子的最后一个单词并将其附加到下一个字符串,我似乎无法理解为什么。
最佳答案
这条线
s = s + " " + l;
除了输入的结尾,即使最后一个字符为“。”,也将始终执行。您很可能在两个
else
-s之间缺少一个if
。关于c++ - 拆分句子并将其放入 vector 中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28848063/