【发布时间】:2016-01-21 02:55:10
【问题描述】:
我有一个小程序,它需要这样一个句子:
“我,喜欢跑步!”并忽略标点符号和空格并计算单词,然后逐行显示每个单词。
此示例将输出 5 作为句子中的单词数。 然后程序会分别输出句子中的每个单词。
I
love
to
go
running
如果字符串以分隔符结尾,则程序可以正常工作,分隔符是以下字符之一:![,?._'@+]
如果字符串结尾没有分隔符。
例如,
我喜欢跑步,爸爸
程序只会计算五个单词而不是六个并输出
5
I
love
to
go
running
pops这个词完全被忽略了。
我的问题是发生这种情况时会发生什么,为什么会发生?
这是我的代码:
int main() {
string s = "";
string t = "";
vector<string> words;
getline(cin,s);
int size = s.length();
for(int i=0; i < size; ++i)
{
if((s[i]>='a' && s[i]<='z') || (s[i]>='A' && s[i]<='Z'))
{
t += s[i];
}
else
{
if(t != "")
{
words.push_back(t);
t = "";
}
}
}
cout<<words.size()<<"\n";
for(vector<string>::iterator it=words.begin();it!=words.end();it++)
{
cout<<*it<<"\n";
}
return 0;
}
【问题讨论】: