【问题标题】:Adding the end of a string, not containing a delimiter, to a vector将不包含分隔符的字符串末尾添加到向量
【发布时间】: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;
}

【问题讨论】:

    标签: c++ string


    【解决方案1】:

    当您的 for 循环结束时,您不会存储为最后一个单词创建的 t

    您应该在 for 循环体之后再次重复以下代码。

        if(t != "")
        {
             words.push_back(t);
             t = "";
        }
    

    【讨论】:

    • 谢谢!这比我试图编码的疯狂要容易得多。感谢您的帮助。
    猜你喜欢
    • 2012-08-03
    • 2021-02-07
    • 2013-02-02
    • 1970-01-01
    • 1970-01-01
    • 2021-01-04
    • 1970-01-01
    • 1970-01-01
    • 2022-08-18
    相关资源
    最近更新 更多